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 。