Este é um servidor de comunicação em tempo real baseado em Websocket, seus aplicativos se comunicam com ele via API simples JSON REST.
Visite http://channelstream.org para obter mais informações.
Use do Docker:
docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest
Obtenha a fonte do GitHub e faça:
YOUR_PYTHON_ENV/bin/pip install channelstream
Gerar nova configuração:
YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini
Inicie o servidor:
YOUR_PYTHON_ENV/bin/channelstream -i config.ini
Os aplicativos de demonstração vivem em https://github.com/channelstream/channelstream_demos repositório.
Eles mostram padrões comuns usados em aplicativos em tempo real.
O ChannelsTream fornece ao API Explorer que você pode usar para interagir com vários pontos de extremidade, está disponível por padrão em http://127.0.0.1:8000/api-explorer.
Para enviar informações, o cliente interage apenas com o seu aplicativo WWW normal. Seu aplicativo lidou com as mensagens de autenticação e processamento do cliente e depois as passou como mensagem assinada para o ChannelsTream Server para transmissão.
WebSocket Client -> WebApp (Segurança e transformação acontecem aqui) -> Chamada de repouso para servidor de soquete -> transmissão para outros clientes
Este modelo é fácil de implementar, seguro, fácil de escalar e permite que todos os tipos de idiomas/aplicativos/filas de trabalho interajam com o Socket Server.
Todas as mensagens precisam ser assinadas com um HMAC do terminal de destino ::
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()
Consulte o API Explorer (http://127.0.0.1:8000/api-explorer) para obter informações detalhadas sobre os terminais.
Alguns exemplos:
API do cliente
API admin
As respostas ao cliente estão na forma de lista contendo objetos :
Exemplos:
Nova mensagem ::
{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Informações de presença ::
{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
message:delete message message:edit presence user_state_change