当前位置: 首页 > news >正文

.net网站开发中注册页面阿坝州网站制作

.net网站开发中注册页面,阿坝州网站制作,自助建站软件排行榜,产品网站开发计划表💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Django Channels实现WebSocket实时通信 Django Channels 简介 环境搭建 安装 Django 和 Channels 创建 Django 项目 配置 A…
💓 博客主页:瑕疵的CSDN主页
📝 Gitee主页:瑕疵的gitee主页
⏩ 文章专栏:《热点资讯》

使用Django Channels实现WebSocket实时通信

      • Django Channels 简介
      • 环境搭建
        • 安装 Django 和 Channels
      • 创建 Django 项目
      • 配置 ASGI
      • 编写消费者
      • 配置路由
      • 创建模板
      • 创建视图
      • 配置 URL
      • 运行开发服务器
      • 测试 WebSocket 连接
      • 总结

Django Channels 是 Django 的一个扩展,允许 Django 处理非 HTTP 协议,如 WebSocket。本文将详细介绍如何使用 Django Channels 实现 WebSocket 实时通信,包括环境搭建、项目结构、安装 Channels、配置 ASGI、编写消费者、运行开发服务器、测试 WebSocket 连接等内容。

Django Channels 简介

Django Channels 是一个 Django 扩展,它将 Django 从仅处理 HTTP 请求扩展到处理多种协议,特别是 WebSocket。通过 Channels,你可以实现实时功能,如聊天应用、实时通知等。

环境搭建

在开始之前,确保你的环境中已安装 Python 和 pip。
安装 Django 和 Channels
pip install django channels

创建 Django 项目

使用 Django 命令行工具创建一个新的项目。

django-admin startproject myproject

进入项目目录并创建一个新的应用。

cd myproject
django-admin startapp chat

配置 ASGI

myproject/settings.py 中添加 channelsINSTALLED_APPS

INSTALLED_APPS = [# ...'channels','chat',
]

myproject/asgi.py 中配置 ASGI。

import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
import chat.routingos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')django_asgi_app = get_asgi_application()application = ProtocolTypeRouter({'http': django_asgi_app,'websocket': AuthMiddlewareStack(URLRouter(chat.routing.websocket_urlpatterns)),
})

编写消费者

chat/consumers.py 中定义 WebSocket 消费者。

import json
from channels.generic.websocket import AsyncWebsocketConsumer累加器 = 0class ChatConsumer(AsyncWebsocketConsumer):async def connect(self):self.room_name = self.scope['url_route']['kwargs']['room_name']self.room_group_name = f'chat_{self.room_name}'# 加入房间组await self.channel_layer.group_add(self.room_group_name,self.channel_name)await self.accept()async def disconnect(self, close_code):# 退出房间组await self.channel_layer.group_discard(self.room_group_name,self.channel_name)# 接收来自 WebSocket 的消息async def receive(self, text_data):text_data_json = json.loads(text_data)message = text_data_json['message']# 向房间组发送消息await self.channel_layer.group_send(self.room_group_name,{'type': 'chat_message','message': message})# 从房间组接收消息并发送给 WebSocketasync def chat_message(self, event):message = event['message']# 发送消息给 WebSocketawait self.send(text_data=json.dumps({'message': message}))

配置路由

chat/routing.py 中定义 WebSocket 路由。

from django.urls import re_path
from . import consumerswebsocket_urlpatterns = [re_path(r'ws/chat/(?P<room_name>\w+)/$', consumers.ChatConsumer.as_asgi()),
]

创建模板

chat/templates/chat/room.html 中创建 WebSocket 客户端模板。

<!DOCTYPE html>
<html>
<head><title>Chat Room</title><script src="https://cdn.socket.io/4.0.0/socket.io.min.js"></script><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body><h1>Chat Room {{ room_name }}</h1><ul id="chat-log"></ul><input id="chat-message-input" type="text" size="100"><button id="chat-message-submit">Send</button><script>const roomName = '{{ room_name }}';const socket = new WebSocket(`ws://${window.location.host}/ws/chat/${roomName}/`);socket.onmessage = function(e) {const data = JSON.parse(e.data);const item = document.createElement('li');item.textContent = data.message;document.getElementById('chat-log').appendChild(item);};document.getElementById('chat-message-submit').onclick = function(e) {const messageInputDom = document.getElementById('chat-message-input');const message = messageInputDom.value;socket.send(JSON.stringify({'message': message}));messageInputDom.value = '';};</script>
</body>
</html>

创建视图

chat/views.py 中创建视图。

from django.shortcuts import renderdef room(request, room_name):return render(request, 'chat/room.html', {'room_name': room_name})

配置 URL

chat/urls.py 中配置 URL 路由。

from django.urls import path
from . import viewsurlpatterns = [path('<str:room_name>/', views.room, name='room'),
]

运行开发服务器

启动 Django 开发服务器。

python manage.py runserver

测试 WebSocket 连接

打开浏览器,访问 http://127.0.0.1:8000/chat/room_name/,其中 room_name 是你选择的房间名称。你应该能够看到聊天室页面,并且可以发送和接收消息。

总结

通过本文,你已经学习了如何使用 Django Channels 实现 WebSocket 实时通信。我们介绍了 Django Channels 的基本概念、环境搭建、项目结构、安装 Channels、配置 ASGI、编写消费者、运行开发服务器、测试 WebSocket 连接等内容。掌握了这些知识,将有助于你在实际工作中更好地利用 Django Channels 来构建实时功能,如聊天应用、实时通知等。
Django Channels 项目结构示例

使用 Django Channels 可以轻松实现 WebSocket 实时通信功能。
WebSocket 实时通信示例

http://www.yayakq.cn/news/799455/

相关文章:

  • 福州做网站公司排名搜索引擎优化教程
  • 北京网站建设华网天下淘宝客导购网站怎么建设
  • 宁波高端网站开发零基础怎么建设网站
  • 公司门户网站网页设计模板图片简单
  • 内网网站建设软件百度问一问官网
  • 网站后台登陆密码忘记vs2008做网站
  • asp个人网站源码中小企业网站制作模板
  • 全自动三次元网站建设重庆快速排名
  • 展览网站模板怎么下载wordpress内置的主题
  • 修改WordPress写文章的模板西安优化外
  • 一般的学校网站怎么做中信建设有限责任公司 乔锋 电话
  • 58同城网站建设深圳丽丽亚做网站不搭建本地环境
  • 网站服务器过期了设计一份包含网站建设范
  • 企业seo自助建站系统企业宣传片视频制作公司
  • 网站建设开发详细步骤流程图哪建设网站好
  • 个人网站制作说明呼市网站设计公司
  • 门户网站建设思维导图响应式设计的网站
  • 合作网站开发公司吴江区城乡建设管理局网站
  • 制作网站参考案例企业网站建设选择兴田德润
  • 行业网站设计alexa排名官网
  • 宁波正规品牌网站设计绿色食品网站开发步骤
  • 南沙网站建设wordpress如何开发手机版
  • 住房和城乡建设局部网站广州做餐饮的招聘网站
  • 做外贸要访问国外的网站怎么办做产品的淘宝客网站
  • 网站维护的方法陕西省网上注册公司流程
  • 模板网站会员黄埔网站开发
  • 除了做视频网站还能做什么网站android 解析 wordpress
  • 武进网站建设怎么样网商之窗高仿手表
  • 做网站好用的cms网站建设制作教程
  • 网站关键词整体方案公司备案证查询网站查询