django:django2配置websocket

news/2024/10/18 8:28:25/

源码地址:

https://gitee.com/liuhaizhang/django2-configuring-websocketicon-default.png?t=N3I4https://gitee.com/liuhaizhang/django2-configuring-websocket

python3.9.0

django==2.2.1

channels==2.2.0

项目结构:

test_websocket_django2

        -chat

        -home

        -test_websocket_django2

        -manage.py

一、配置settings.py

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','channels', #1、注册channels'chat.apps.ChatConfig','home.apps.HomeConfig',]WSGI_APPLICATION = 'test_websocket_django2.wsgi.application'
#2、新增ASGI应用
ASGI_APPLICATION = 'test_websocket_django2.asgi.application'

二、chat应用:所有websocket都放在这里

新建

routings.py : 存放websocket路由

from django.urls import path
from . import consumers# 这个变量是存放websocket的路由
websocket_urlpatterns = [path('chat/socket/', consumers.ChatView),
]

consumers.py :写websocket的类

from channels.generic.websocket import WebsocketConsumer
from channels.exceptions import StopConsumer
from asgiref.sync import async_to_sync
import timeclass ChatView(WebsocketConsumer):def websocket_connect(self, message):# 客户端与服务端进行握手时,会触发这个方法# 服务端允许客户端进行连接,就是握手成功self.accept()def websocket_receive(self, message):# 接收到客户端发送的数据recv = message.get('text')print('接收到的数据,', recv)if recv == 'close':# 服务的主动断开连接print('服务器断开连接')self.close()else:# 客户端向服务端发送数据self.send(f'我收到了,{time.strftime("%Y-%m-%d %H:%M:%S")}')def websocket_disconnect(self, message):# 客户端端口连接时,会触发该方法,断开连接print('客户端断开连接')raise StopConsumer()

三、在settings.py同级目录下创建asgi.py

写入内容:

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import chat.routings #导入websocket的路由application = ProtocolTypeRouter({'websocket': AuthMiddlewareStack(URLRouter(chat.routings.websocket_urlpatterns, #把websocket的路由注册进去)),
})

四、启动项目,测试

1、启动

python manage.py runsever

启动显示,应该是这样:ASGI/Channels

 2、测试

测试网站:

EasySwoole-WebSocket在线测试工具

 


http://www.ppmy.cn/news/63347.html

相关文章

用ascii画十二生肖

十二生肖,也称为“十二属相”,是中国传统的生肖分类法,它将时间和人的出生年份联系起来,以十二种动物为代表来区分不同的年份和人的性格特征。这十二种动物分别为鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗和猪,每个…

一体化管理系统如何使企业受益?

在当今世界,大多数企业使用管理系统来制定政策和程序,以帮助实现其业务目标。管理体系是用于确保企业能够管理实现其目标所需的所有任务的流程和程序的结构。 公司或企业会有支持客户、采购、项目、考勤、财务等管理系统,这些管理系统通常在…

树的储存结构和表示法_20230506

树的储存结构和表示法 前言 树是一类非常重要的数据结构,它是图和其它更高阶数据的基础,人们对树的储存结构和表示法进行了大量研究,这里介绍三种常见的链表结构来表示树的基本方法。 树的双亲表示法 假设以一组连续空间储存数据的结点&a…

数智化转型再加速,低代码开发助力企业转型

毫无疑问,随着数智化转型的加速,越来越多的企业正在把数智化战略提升到一个全新的高度,转型的进程也正从“浅层次”的数智化走向“深层次”数智化的阶段。 据权威机构数据统计,过去几年全球数字经济同比增长15.6%,采取…

基于微服务架构的水果销售系统的设计与实现

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 整体上为微服务架构,使用 SpringCloud 技术,每个独立的服务为一个单独的 SpringBoot 工程;数据库使用 MySQL 数据库;分布式缓存使用 Redis,消息队列使用 Kafka。包括…

深度学习知识点总结(持续更新中)

文章目录 知识点总结1.神经网络2.卷积神经网络(CNNs)3.循环神经网络(RNNs)4.深度强化学习(DRL)5.生成对抗网络(GANs)6.自编码器(Autoencoders)7.深度学习框架8.超参数调优9.迁移学习10.模型评估11.模型部署12.自然语言处理(NLP)13.计算机视觉&#xff08…

【发表案例】智能传感类、持续学习模型、计算建模、边缘计算等领域SCI,最快仅1个月14天录用

3区智能传感类SCI&EI 【期刊简介】IF:1.5-2.0,JCR3区,中科院4区 【检索情况】SCI&EI 双检,正刊 【征稿领域】智能信号处理技术在基于机器学习中遥感相关的应用研究 录用案例:2个月零5天录用 2023.04.28 | Accept 20…

一、FM1288调试方案-调试基础知识

为了方便后续的调试,我这边针对调试过程中,会遇到的专业基础知识做一下扫盲,方便后面阅读理解方案, 已经掌握或了解的可以直接跳过 文章目录 1. 声音的产生和记录(采样率/声道/精度/PCM编码)2. 语音的基本特征3. 声音的三要素:音调/音量/音色3. 人类听觉范围4. 人声的频…