이것은 WebSocket 기반의 실시간 통신 서버이며 응용 프로그램은 Simple 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.1:8000/api-explorer에서 기본적으로 사용할 수 있습니다.
정보를 보내려면 클라이언트는 일반적인 www 응용 프로그램과 만 상호 작용합니다. 앱은 클라이언트의 인증 및 처리를 처리 한 다음 브로드 캐스트를 위해 ChannelStream 서버에 서명 된 메시지로 전달했습니다.
WebSocket Client-> WebApp (보안 및 변환은 여기에서 발생합니다) -> 소켓 서버에 대한 REST CALL-> 다른 클라이언트에게 방송
이 모델은 구현하기 쉽고 안전하며 스케일링이 쉽고 모든 종류의 언어/앱/작업 대기열이 소켓 서버와 상호 작용할 수 있습니다.
모든 메시지는 대상 엔드 포인트의 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.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 .