首页 > 其他分享 >如何在django项目中启动websocket服务

如何在django项目中启动websocket服务

时间:2024-09-24 20:36:17浏览次数:11  
标签:group room 启动 asgi self django websocket message name

首先下载redis,windows上要下5.0以上的版本,链接为:Releases · tporadowski/redis (github.com)

紧接着python要安装redis,channls以及daphne,asgi_redis

然后在settings中配置

 必须放在第一行,以及channles

WSGI_APPLICATION = "start_up_file_km.wsgi.application"
ASGI_APPLICATION = "start_up_file_km.asgi.application"
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('127.0.0.1', 6379)],
},
},
}

配置ASGI
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "LimsApp.settings.settings")

django_asgi_app = get_asgi_application()
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AuthMiddlewareStack(
URLRouter(
socket_urlpatterns
)
),
})

路由配置
from utils import consumers

# 这个变量是存放websocket的路由
socket_urlpatterns = [
path('socket/all/', consumers.ChatConsumer.as_asgi()),

]

websocket代码
import json
from channels.generic.websocket import AsyncWebsocketConsumer
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name

# Join room group
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name
)

await self.accept()

async def disconnect(self, close_code):
# Leave room group
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name
)

# Receive message from WebSocket
async def receive(self, text_data):
message = dict(json.loads(text_data))

# Send message to room group
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message
}
)

# Receive message from room group
async def chat_message(self, event):
message = event['message']

# Send message to WebSocket
await self.send(text_data=json.dumps({
'message': message
}))

标签:group,room,启动,asgi,self,django,websocket,message,name
From: https://www.cnblogs.com/shangxin-bai/p/18311848

相关文章

  • Django+Echarts+Ajax动态加载横、纵坐标数据
    前端html页面(不是重点,可以直接不看):<!--第三部分可视化展示模块start--><divid="diff_analysis3_graphic"style="width:1200px;margin:0auto;margin-top:40px;"><divclass="StatHomemainHeaderStyle">&......
  • 【开题报告】基于django+vue医院电子病历管理(论文+程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的飞速发展和医疗信息化建设的不断深入,医院电子病历管理系统已成为现代医疗体系中不可或缺的一部分。传统的纸质病历不仅存储......
  • OpenHarmony 的启动子系统startup与init组件
    1.rk3568的startup配置配上initcomponent以后,系统就会编译集成这个组件。vendor/hihope/rk3568/config.json{"subsystem":"startup","components":[{"component":"init","fea......
  • 基于django+vue摄影交流系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着数字技术的飞速发展,摄影艺术已成为大众生活中不可或缺的一部分,它不仅记录着生活的点滴,更是个人情感与创意表达的重要方式。然而,在摄影......
  • 基于django+vue社会公益服务平台的设计与实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展和人们公益意识的日益增强,社会公益活动已成为连接社会各界、促进资源合理配置与共享的重要桥梁。然而,传统公益模式在信......
  • 基于django+vue商品分析与管理系统的设计和实现【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着电子商务的迅猛发展,商品种类与数量呈爆炸式增长,企业面临着前所未有的商品管理挑战。传统的手工或简单信息化管理方式已难以满足当前复......
  • 基于django+vue热点新闻搜索系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,信息爆炸式增长已成为现代社会的重要特征。每日海量的新闻资讯充斥着各类媒体平台,用户如何快速、准确地从浩如烟......
  • 项目流程(启动-规划-执行-跟进-收尾)
    产品经理要知道一个版本的需求所经历的各个阶段。一:启动启动一般情况下是老板要确定的,一般情况下产品经理接触不到这块。1.1行业调研决定要进入哪个行业。工作内容:调研行业的发展现状及发展趋势,目的是为产品的发展方向提供依据。工作产出:商业需求文档BRD(BusinessRequirementDo......
  • django ORM
    安装pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpledjango==2.2pipinstallpymysql#django使用pymysql作为数据库连接引擎配置#__init__.py#使用pymysql替代mysqlDB作为mysql引擎importpymysqlpymysql.install_as_MySQLdb()#settings.pyDATABASES=......
  • Vue.js与Flask/Django后端配合
    Vue.js是一个流行的前端JavaScript框架,而Flask和Django是常用的Python后端框架。以下是关于Vue.js与Flask或Django后端配合的介绍:一、Vue.js的特点与优势Vue.js具有以下主要特点和优势:渐进式框架:可以根据项目需求逐步引入和扩展功能。响应式数据绑定:自动更......