Dies ist ein WebSocket-basierter Echtzeit-Kommunikationsserver. Ihre Anwendungen kommunizieren mit ihm über einfache JSON-REST-API.
Besuchen Sie http://channelstream.org für weitere Informationen.
Verwendung von Docker:
docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest
Erhalten Sie Quelle von Github und tun Sie:
YOUR_PYTHON_ENV/bin/pip install channelstream
Neue Konfiguration generieren:
YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini
Starten Sie den Server:
YOUR_PYTHON_ENV/bin/channelstream -i config.ini
Demo -Anwendungen live in https://github.com/channelstream/channelstream_demos repository.
Sie zeigen gemeinsame Muster, die in Echtzeitanwendungen verwendet werden.
ChannelStream bietet API-Explorer, mit dem Sie mit verschiedenen Endpunkten interagieren können. Er ist standardmäßig unter http://127.0.0.1:8000/api- explorer verfügbar.
So sendet der Client nur mit Ihrer normalen WWW -Anwendung interagiert. Ihre App hat Authentifizierungs- und Verarbeitungsnachrichten vom Client abgewickelt und sie dann als signierte Nachricht an den ChannelStream Server für die Sendung übergeben.
WebSocket -Client -> WebApp (Sicherheit und Transformation hier stattdessen) -> REHE REHE CALL EIN SOCKKEL -Server -> an andere Clients ausgestrahlt
Dieses Modell ist einfach zu implementieren, sicher, einfach zu skalieren und ermöglicht es allen Arten von Sprachen/Apps/Arbeitswarteschlangen, mit Socket Server zu interagieren.
Alle Nachrichten müssen mit einem HMAC of Ziel -Endpunkt unterzeichnet werden ::
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()
Bitte wenden Sie sich an den API Explorer (http://127.0.0.1:8000/api- explorer), um ausführliche Informationen zu Endpunkten zu erhalten.
Einige Beispiele:
Client -API
Admin -API
Die Antworten auf den Client befinden sich in Form einer Liste mit Objekten :
Beispiele:
Neue Nachricht ::
{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Präsenz Info ::
{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Derzeit werden die folgenden Nachrichtentypen ausgeliefert: message , message:edit , message:delete , presence , user_state_change .