นี่คือเซิร์ฟเวอร์การสื่อสารแบบเรียลไทม์ที่ใช้ WebSocket แอปพลิเคชันของคุณสื่อสารกับมันผ่าน JSON REST API อย่างง่าย
เยี่ยมชม http://channelstream.org สำหรับข้อมูลเพิ่มเติม
ใช้จาก Docker:
docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest
รับแหล่งที่มาจาก gitHub และทำ:
YOUR_PYTHON_ENV/bin/pip install channelstream
สร้างการกำหนดค่าใหม่:
YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini
เริ่มต้นเซิร์ฟเวอร์:
YOUR_PYTHON_ENV/bin/channelstream -i config.ini
แอปพลิเคชั่นตัวอย่างอาศัยอยู่ใน https://github.com/channelstream/channelstream_demos
พวกเขาแสดงรูปแบบทั่วไปที่ใช้ในแอปพลิเคชันแบบเรียลไทม์
ChannelStream ให้ API Explorer ที่คุณสามารถใช้ในการโต้ตอบกับจุดสิ้นสุดต่างๆสามารถใช้ได้ตามค่าเริ่มต้นภายใต้ http://127.0.0.1:8000/API-Explorer
ในการส่งข้อมูลไคลเอนต์โต้ตอบกับแอปพลิเคชัน WWW ปกติของคุณเท่านั้น แอพของคุณจัดการการรับรองความถูกต้องและการประมวลผลข้อความจากไคลเอนต์จากนั้นส่งผ่านเป็นข้อความที่ลงนามไปยังเซิร์ฟเวอร์ช่องสัญญาณสำหรับการออกอากาศ
ไคลเอนต์ WebSocket -> WebApp (ความปลอดภัยและการแปลงเกิดขึ้นที่นี่) -> REST CALL ไปยัง Socket Server -> Broadcast ไปยังไคลเอนต์อื่น ๆ
รุ่นนี้ใช้งานง่ายปลอดภัยและง่ายต่อการปรับขนาดและช่วยให้ทุกประเภทของภาษา/แอพ/คิวงานสามารถโต้ตอบกับซ็อกเก็ตเซิร์ฟเวอร์
ข้อความทั้งหมดต้องลงนามด้วย HMAC ของปลายทางปลายทาง ::
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()
โปรดปรึกษา API Explorer (http://127.0.0.1:8000/api-explorer) สำหรับข้อมูลเชิงลึกเกี่ยวกับจุดสิ้นสุด
ตัวอย่างบางส่วน:
API ลูกค้า
ผู้ดูแลระบบ API
การตอบสนองต่อลูกค้าอยู่ในรูปแบบของ รายการ ที่มี วัตถุ :
ตัวอย่าง:
ข้อความใหม่ ::
{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
ข้อมูลสถานะ ::
{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}
ปัจจุบันประเภทข้อความดังต่อไปนี้ถูกปล่อยออกมา: message , message:edit , message:delete , presence , user_state_change