WebSocket 可以讓 Server 與 瀏覽器之間建立一個持續、雙向且即時的資料傳輸通道。WebSocket 只需一次交握,就能讓雙方時主動暨傳資料,適合低延遲、高頻率更新的應用場景,比如聊天室、股市看盤軟体等。
uvicorn
runserver 不支援 WebSocket 協定,需改成 uvicorn 伺服器透過 asgi 介面才能啟動 WebSocket。
安裝套件
WebSocket 所需的套件如下
pip install django channels uvicorn
settings.py
settings.py 需裏增如下指令設定
ASGI_APPLICATION = 'mahalbot.asgi.application'#此行可以忽略,因為由啟動程式 uvicorn mahalbot.asgi:application 就指定了
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [("127.0.0.1", 6379)],
},
},
}
asgi.py
asgi.py 修改 application 成如下設定
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket": URLRouter(
chat.routing.websocket_urlpatterns
),
})
todo
啟動伺服器
使用如下指令啟動 uvicorn 伺服器
/server/mahalbot/.venv/bin/uvicorn mahalbot.asgi:application --host localhost --port 7001 --reload"
todo
