WebSocket

      在〈WebSocket〉中尚無留言

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *