Il s'agit d'un serveur de communication en temps réel basé sur WebSocket, vos applications communiquent avec lui via une simple API JSON REST.
Visitez http://channelsstream.org pour plus d'informations.
Utiliser à partir de Docker:
docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest
Obtenez la source de GitHub et faites:
YOUR_PYTHON_ENV/bin/pip install channelstream
Générer une nouvelle configuration:
YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini
Démarrez le serveur:
YOUR_PYTHON_ENV/bin/channelstream -i config.ini
Les applications de démonstration vivent dans https://github.com/channelsstream/channelsstream_demos Repository.
Ils montrent des modèles communs utilisés dans les applications en temps réel.
ChannelStream fournit une API Explorer que vous pouvez utiliser pour interagir avec divers points de terminaison, il est disponible par défaut sous http://127.0.0.1:8000/api-explorer.
Pour envoyer des informations, le client interagit uniquement avec votre application WWW normale. Votre application a géré l'authentification et le traitement des messages du client, puis les a transmis en tant que message signé sur ChannelStream Server pour diffuser.
Client WebSocket -> webApp (la sécurité et la transformation se produisent ici) -> Appel de repos sur Socket Server -> diffusé à d'autres clients
Ce modèle est facile à implémenter, sécurisé, facile à échelle et permet à toutes sortes de langages / applications / files d'attente de travail pour interagir avec Socket Server.
Tous les messages doivent être signés avec un HMAC de point de terminaison de destination ::
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()
Veuillez consulter API Explorer (http://127.0.0.1:8000/API-Explorer) pour des informations approfondies sur les points de terminaison.
Quelques exemples:
API client
API administrateur
Les réponses au client sont sous forme de liste contenant des objets :
Exemples:
Nouveau message ::
{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Informations sur la présence ::
{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Actuellement, les types de messages suivants sont émis: message , message:edit , message:delete , presence , user_state_change .