zoukankan      html  css  js  c++  java
  • 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(对应的应用中创建)中完成

  • 相关阅读:
    Ubuntu下Geary安装
    (1)html初步--表格的使用
    MYSQL笔记
    三,springboot集成mybatis
    一台服务部署多个tomcat注意事项
    Apache和Tomcat整合(一个Apache 不同域名处理多个不同业务)
    linux 安装 apache
    linux笔记
    关联查询一张小表。对性能有影响吗(mysql)
    关于mysql的临时表并行的问题
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12691991.html
Copyright © 2011-2022 走看看