Ini adalah server komunikasi real-time berbasis WebSocket, aplikasi Anda berkomunikasi dengannya melalui JSON REST API sederhana.
Kunjungi http://channelstream.org untuk informasi lebih lanjut.
Gunakan dari Docker:
docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest
Dapatkan sumber dari GitHub dan lakukan:
YOUR_PYTHON_ENV/bin/pip install channelstream
Menghasilkan konfigurasi baru:
YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini
Mulai server:
YOUR_PYTHON_ENV/bin/channelstream -i config.ini
Aplikasi demo hidup di https://github.com/channelstream/channelstream_demos repositori.
Mereka menunjukkan pola umum yang digunakan dalam aplikasi real-time.
ChannelStream menyediakan API Explorer yang dapat Anda gunakan untuk berinteraksi dengan berbagai titik akhir, tersedia secara default di bawah http://127.0.0.1:8000/api-explorer.
Untuk mengirim informasi, klien hanya berinteraksi dengan aplikasi WWW normal Anda. Aplikasi Anda menangani otentikasi dan memproses pesan dari klien, kemudian meneruskannya sebagai pesan yang ditandatangani ke ChannelStream Server untuk disiarkan.
Websocket Client -> Webapp (keamanan dan transformasi terjadi di sini) -> Panggilan REST ke Socket Server -> disiarkan ke klien lain
Model ini mudah diimplementasikan, aman, mudah diukur dan memungkinkan semua jenis bahasa/aplikasi/antrian kerja untuk berinteraksi dengan Socket Server.
Semua pesan perlu ditandatangani dengan HMAC titik akhir tujuan ::
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()
Silakan berkonsultasi dengan API Explorer (http://127.0.0.1:8000/api-explorer) untuk informasi mendalam tentang titik akhir.
Beberapa contoh:
API Klien
API Admin
Tanggapan terhadap klien dalam bentuk daftar yang berisi objek :
Contoh:
Pesan baru ::
{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Info kehadiran ::
{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
Saat ini jenis pesan yang dikeluarkan: message , message:edit , message:delete , presence , user_state_change .