6.channels 配置websocket
2024-10-09 16:20:38
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
最新文章
- python 使用__neg__和__iter__
- 关于IE6的PNG图像透明使用AlphaImageLoader的缺点
- php设置浏览器响应时间
- AppSettings和connectionStrings的却别(转)
- Xcode - 修改变量名、类名及字符串的替换操作
- lua module package.seeall选项
- Gulp学习指南之CSS合并、压缩与MD5命名及路径替换(转载)
- 将Nagios监控信息存入Mysql
- [Everyday Mathematics]20150205
- mysql 运行sql脚本文件
- ios中XPath的语法
- spring setter方法注入
- Android在发送带有附件的邮件
- 设计模式 -->; (5)适配器模式
- TortoiseGit安装与使用
- Linux三剑客-grep || awk || sed
- 漫谈Linux标准的文件系统(Ext2/Ext3/Ext4)
- java基础-jdk工具包
- Linux 技巧:让进程在后台可靠运行的几种方法【转】
- abap 变量检查
热门文章
- z—libirary最新地址获取,zlibirary地址获取方式,zliabary最新地址,zliabary官网登录方式,zliabary最新登陆
- rtmp/rtsp/hls公网测试地址
- 跟羽夏学 Ghidra ——窗口
- Java SE final关键字
- kali2020.1修改root密码,以最高权限登录系统
- 2022 CLion 中的Cygwin 配置(最全,最良心版)
- 记Mybatis动态sql
- 第六章:Django 综合篇 - 14:Django 日志
- 通过helm搭建Harbor
- 浏览器的 JavaScript 控制台功能调试vue