Este es un servidor de comunicación en tiempo real basado en WebSocket, sus aplicaciones se comunican con él a través de la simple API JSON REST.
Visite http://channelsstream.org para obtener más información.
Use desde Docker:
docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest
Obtenga fuente de GitHub y haga:
YOUR_PYTHON_ENV/bin/pip install channelstream
Generar una nueva configuración:
YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini
Inicie el servidor:
YOUR_PYTHON_ENV/bin/channelstream -i config.ini
Las aplicaciones de demostración viven en https://github.com/channelsstream/channelstream_demos repository.
Muestran patrones comunes utilizados en aplicaciones en tiempo real.
ChannelStream proporciona API Explorer que puede usar para interactuar con varios puntos finales, está disponible de forma predeterminada en http://127.0.0.1:8000/api-explorer.
Para enviar información, el cliente solo interactúa con su aplicación WWW normal. Su aplicación manejó la autenticación y los mensajes de procesamiento del cliente, luego los pasó como mensaje firmado al servidor ChannelStream para transmitir.
WebSocket Client -> WebApp (la seguridad y la transformación ocurre aquí) -> REST CALLE AL SERVER SERVER -> BROUNDCASE A OTROS CLIENTES
Este modelo es fácil de implementar, seguro, fácil de escalar y permite que todo tipo de idiomas/aplicaciones/colas de trabajo interactúe con Socket Server.
Todos los mensajes deben firmarse con un HMAC de punto final 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 API Explorer (http://127.0.0.1:8000/api-explorer) para obtener información en profundidad sobre los puntos finales.
Algunos ejemplos:
API del cliente
API administradora
Las respuestas al cliente están en forma de lista que contiene objetos :
Ejemplos:
Nuevo mensaje ::
{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Información de presencia ::
{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Se emiten los siguientes tipos de mensajes: message , message:edit , message:delete , presence , user_state_change .