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模塊內部幫你封裝了握手/加密/解密等所有操作"""

基本使用

  • 注冊app

    INSTALLED_APPS = [
        'channels'
    ]
    

    注冊完成后,django會無法啟動,會直接報錯

    CommandError: You have not set ASGI_APPLICATION, which is needed to run the server.

  • 配置

    # 2 配置變量
    ASGI_APPLICATION = 'day01.routing.application'
    ASGI_APPLICATION = '項目名同名的文件名.文件夾下py文件名默認就叫routing.該py文件內部的變量名默認就叫application'
    
  • 去項目名同名的文件夾下面新建一個py文件,定義application變量

    from channels.routing import ProtocolTypeRouter,URLRouter
    
    
    application = ProtocolTypeRouter({
        'websocket':URLRouter([
            # 書寫websocket路由與視圖函數對應關系
        ])
    })
    

上述操作配置完成后,啟動django會由原來的wsgiref啟動變成asgi啟動(內部:達芙妮)

並且啟動之后django即支持websocket也支持http協議

基於http的操作還是在urls.py和views.py中完成

基於websocket的操作則在routing.py和consumer.py(對應的應用中創建)中完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM