channelstream
1.0.0
这是一个基于WebSocket的实时通信服务器,您的应用程序通过简单的JSON REST API与其通信。
有关更多信息,请访问http://channelstream.org。
使用Docker:
docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest
从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 Explorer,您可以用来与各种端点进行交互,默认情况下可在http://127.0.0.1.1:8000/api-explorer下使用。
发送信息仅与您的普通www应用程序相互作用。您的应用程序处理了客户端的身份验证和处理消息,然后将它们作为签名消息传递给ChannelStream服务器以进行广播。
WebSocket客户端 - > WebApp(在此处发生安全性和转换) - > REST调用到Socket Server->向其他客户端广播
该模型易于实现,安全,易于扩展,并允许各种语言/应用程序/工作队列与套接字服务器进行交互。
所有消息都需要使用目的地端点的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 Explorer(http://127.0.0.1:8000/api-explorer),以了解有关端点的深入信息。
一些例子:
客户端API
管理API
对客户的响应是包含对象的列表的形式:
示例:
新消息::
{
"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"
}
当前启用了以下消息类型: message , message:edit , message:delete , presence , user_state_change 。