跳转到主要内容

支持channels/users通信的Websocket服务器

项目描述

Channelstream

Build Status

这是一个基于Websocket的实时通信服务器,您的应用程序通过简单的JSON REST API与它通信。

更多信息请访问 http://channelstream.org

安装和设置

从github获取源代码并执行

YOUR_PYTHON_ENV/bin/pip install channelstream

生成新的配置

YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini

启动服务器

YOUR_PYTHON_ENV/bin/channelstream -i config.ini

演示

演示应用程序存放在 https://github.com/Channelstream/channelstream_demos 仓库。

它们展示了实时应用中常用的常见模式。

安全性和通信模型

Channelstream提供了一个API资源管理器,您可以使用它与各种端点交互,默认情况下可在 http://127.0.0.1:8000/api-explorer 下访问。

要发送信息,客户端只与您的正常www应用程序交互。您的应用程序处理身份验证和从客户端处理消息,然后将它们作为签名消息传递给channelstream服务器进行广播。

websocket客户端 -> webapp(安全和转换在这里发生) -> 对socket服务器的REST调用 -> 向其他客户端广播

此模型易于实现、安全、易于扩展,并允许所有类型的语言/应用程序/工作队列与套接字服务器交互。

所有消息都需要用目标端点的HMAC进行签名:

import requests
from itsdangerous import TimestampSigner
signer = TimestampSigner(SERVER_SECRET)
sig_for_server = signer.sign('/connect')
secret_headers = {'x-channelstream-secret': sig_for_server,
                  'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(payload),
                         headers=secret_headers).json()

数据格式和端点

有关端点的详细信息,请咨询API探索器(http://127.0.0.1:8000/api-explorer)。

一些示例

  • /connect POST 将用户连接到服务器
  • /subscribe POST 将连接订阅到新频道
  • /unsubscribe POST 从频道中删除连接
  • /user_state POST 设置特定用户的状态
  • /message POST 向频道和/或用户发送消息
  • /message DELETE 从历史记录中删除消息并发出更改
  • /message PATCH 编辑历史记录中的现有消息并发出更改
  • /channel_config POST 设置频道配置
  • /info POST 返回频道信息

客户端API

  • /ws GET 处理WebSocket连接
  • /listen GET 处理长轮询连接
  • /disconnect GET 永久从服务器删除连接
  • /disconnect POST 永久从服务器删除连接

管理员API

  • /admin/admin.json GET 为管理面板目的以JSON格式返回服务器信息
  • /admin/admin.json POST 为管理面板目的以JSON格式返回服务器信息

对js客户端的响应

客户端的响应以包含对象的形式的列表的形式呈现。

示例

新消息 ::

{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}

存在信息 ::

{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}

目前发出的消息类型包括:messagemessage:editmessage:deletepresenceuser_state_change

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

channelstream-0.7.1.tar.gz (211.8 kB 查看哈希值

上传时间

构建分发

channelstream-0.7.1-py2.py3-none-any.whl (218.0 kB 查看哈希值

上传时间 Python 2 Python 3