WebSocketのサードパーティモジュール

実際のアプリケーションでは、すべてのバックエンドフレームワークがデフォルトでWebSocketプロトコルをサポートしているわけではありません。使用する場合は、異なるサードパーティモジュールを使用する必要がある場合があります。

"""
后端框架
django
	默认不支持websocket
	第三方模块:channels

flask
	默认不支持websocket
	第三方模块:geventwebsocket
	
tornado
	默认支持websocket
"""

djangoはどのようにWebSocketをサポートしていますか

# 下载channels模块需要注意的点
# 1.版本不要用最新版 推荐使用2.3版本即可 如果你安装最新版可能会出现自动将你本地的django版本升级为最新版
# 2.python解释器建议使用3.6版本(3.5可能会有问题,3.7可能会有问题 具体说明问题没有给解释)
pip3 install channels==2.3
"""channels模块内部帮你封装了握手/加密/解密等所有操作"""

基本的な使い方

  • アプリを登録

    INSTALLED_APPS = [
        'channels'
    ]
    

    登録が完了すると、djangoは起動せず、直接エラーを報告します

    CommandError:サーバーの実行に必要なASGI_APPLICATIONを設定していません。

  • 構成

    # 2 配置变量
    ASGI_APPLICATION = 'day01.routing.application'
    ASGI_APPLICATION = '项目名同名的文件名.文件夹下py文件名默认就叫routing.该py文件内部的变量名默认就叫application'
    
  • 同じプロジェクト名のフォルダーに移動し、新しいpyファイルを作成してアプリケーション変数を定義します

    from channels.routing import ProtocolTypeRouter,URLRouter
    
    
    application = ProtocolTypeRouter({
        'websocket':URLRouter([
            # 书写websocket路由与视图函数对应关系
        ])
    })
    

上記の動作設定が完了すると、Djangoの起動は元のwsgirefからasgiの起動(内部:Daphne)に始まります。

起動後、djangoはwebsocketとhttpプロトコルの両方をサポートします

httpに基づく操作は引き続きurls.pyとviews.pyで行われます

websocketに基づく操作は、routing.pyおよびconsumer.py(対応するアプリケーションで作成)で行われます。

おすすめ

転載: www.cnblogs.com/yafeng666/p/12691991.html