Django默认不支持websockey,需要Django支持的话需要安装第三方组件
django channels 是django支持websocket的一个模块。
 
1.安装
pip3 install channels # 安装
 
 
2.settings.py配置
 
#INSTALLED_APPS 中注册channels
INSTALLED_APPS = (
'channels',
)
 
 
#添加ASGI支持websocket ,指向项目下asgi文件的application
ASGI_APPLICATION = "demo.asgi.application"
 
3.修改asgi文件
 
import os

from django.core.asgi import get_asgi_application

from channels.routing import ProtocolTypeRouter, URLRouter
from WebSocketPretty import routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DemoName.settings') # 添加项目配置 # application = get_asgi_application() 只支持http,注释掉该行 # 既支持http又支持websocket
application = ProtocolTypeRouter(
{'http': get_asgi_application(), # 自动找urls.py 视图函数 - > http请求
'websocket': URLRouter(routing.websocket_urlpatterns) # routing 相当于urls.py 路由
}
)
 
 
4.在app下创建routing.py (ws主路由)
Channels路由配置类似于Django URLconf,当通道服务器接收到HTTP请求时,它告诉通道运行什么代码。
在app目录下,创建一个文件 routing.py文件
from django.urls import path

from WebSocketPretty import consumers #consumers相当于ws视图

websocket_urlpatterns = [
# 请求地址匹配ws/ ,走websocket视图处理
path('ws/',consumers.ChatConsumer.as_asgi())
]
 
5.在app下创建consumers.py 文件
from channels.generic.websocket import WebsocketConsumer
from channels.exceptions import StopConsumer class ChatConsumer(WebsocketConsumer): def websocket_connect(self, message):
# 有客户端向后端发送websocket连接的请求时,自动触发 self.accept() # 服务端允许和客户端创建连接 def receive(self, text_data=None, bytes_data=None):
# text_data 是前端向后端发送数据,自动触发接收消息
print(text_data)
# send 是后端向前端发送数据
self.send('ok') def websocket_disconnect(self, message):
# 客户端与服务端断开连接时,自动触发
raise StopConsumer
 
 
 
 

最新文章

  1. python 使用__neg__和__iter__
  2. 关于IE6的PNG图像透明使用AlphaImageLoader的缺点
  3. php设置浏览器响应时间
  4. AppSettings和connectionStrings的却别(转)
  5. Xcode - 修改变量名、类名及字符串的替换操作
  6. lua module package.seeall选项
  7. Gulp学习指南之CSS合并、压缩与MD5命名及路径替换(转载)
  8. 将Nagios监控信息存入Mysql
  9. [Everyday Mathematics]20150205
  10. mysql 运行sql脚本文件
  11. ios中XPath的语法
  12. spring setter方法注入
  13. Android在发送带有附件的邮件
  14. 设计模式 --> (5)适配器模式
  15. TortoiseGit安装与使用
  16. Linux三剑客-grep || awk || sed
  17. 漫谈Linux标准的文件系统(Ext2/Ext3/Ext4)
  18. java基础-jdk工具包
  19. Linux 技巧:让进程在后台可靠运行的几种方法【转】
  20. abap 变量检查

热门文章

  1. z—libirary最新地址获取,zlibirary地址获取方式,zliabary最新地址,zliabary官网登录方式,zliabary最新登陆
  2. rtmp/rtsp/hls公网测试地址
  3. 跟羽夏学 Ghidra ——窗口
  4. Java SE final关键字
  5. kali2020.1修改root密码,以最高权限登录系统
  6. 2022 CLion 中的Cygwin 配置(最全,最良心版)
  7. 记Mybatis动态sql
  8. 第六章:Django 综合篇 - 14:Django 日志
  9. 通过helm搭建Harbor
  10. 浏览器的 JavaScript 控制台功能调试vue