Это сервер связи в режиме реального времени на основе 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/channelsream_demos.
Они показывают общие закономерности, используемые в приложениях в реальном времени.
CannelStream предоставляет API Explorer, который вы можете использовать для взаимодействия с различными конечными точками, он доступен по умолчанию по http://127.0.0.1:8000/api-explorer.
Чтобы отправить информацию, клиент взаимодействует только с вашим обычным приложением WWW. Ваше приложение обрабатывало аутентификацию и обработку сообщений от клиента, а затем передало их в виде подписанного сообщения на сервер CanelStream для трансляции.
WebSocket Client -> WebApp (Здесь происходит безопасность и преобразование) -> REST CALL на Socket Server -> Трансляция другим клиентам
Эта модель легко реализовать, безопасно, прост в масштабе и позволяет всем видам языков/приложений/рабочих очередях взаимодействовать с 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
Admin 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 .