これはWebsocketベースのリアルタイム通信サーバーであり、アプリケーションはSimple 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エクスプローラーを提供します。デフォルトではhttp://127.0.0.1:8000/api-explorerで使用できます。
情報を送信するには、クライアントが通常のWWWアプリケーションとのみ対話します。アプリはクライアントからの認証と処理メッセージを処理し、ブロードキャストのためにChannelStreamサーバーに署名されたメッセージとして渡しました。
WebSocket Client-> WebApp(セキュリティと変換がここで行われます) - > Socket Serverへの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 Explorer(http://127.0.0.1:8000/apiexplorer)に相談してください。
いくつかの例:
クライアントAPI
AdminAPI
クライアントへの応答は、オブジェクトを含むリストの形式です。
例:
新しいメッセージ::
{
"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 。