Skip to content

WebSocket

使用说明

主界面

WebSocket实现依赖Django Channels和Uvicorn。

  • Django Channels 是 Django 框架的扩展库,用于支持异步通信和WebSocket 协议,解决了传统 Django 仅支持 HTTP 同步请求的局限性。它允许 Django 处理更复杂的交互场景,如实时聊天、通知推送、数据流更新等,使 Web 应用具备 “双向通信” 能力。
  • Uvicorn 是一个高性能的 ASGI(Asynchronous Server Gateway Interface)服务器,用于构建和运行 Python 异步 Web 应用程序。它基于 asyncio 库实现异步 I/O 操作,支持 HTTP 和 WebSocket 协议

image-20250622083050028

开启WebSocket功能

使用 Uvicorn 运行 Django 项目:进入项目根目录(包含manage.py的目录),运行下面命令

sh
# 开发环境中启动 Uvicorn
uvicorn mysite.asgi:application --reload
# 或
uvicorn mysite.asgi:application --host 0.0.0.0 --port 8000 --reload

开启后,能看到连接状态为OPEN

TIP

不要同时使用python manage.py runserveruvicorn mysite.asgi:application --reload命令运行Django项目。

聊天功能

  • 在消息输入框输入发送内容,选择接收人并发送。
  • 接收人登录平台,并进入WebSocket界面,能实时收到消息。

image-20250622084541169

后端实现

目录

代码目录:mysite\myapp_infra\websocket

sh
websocket
|-- consumers.py # 聊天功能
`-- routing.py # WebSocket 路由配置

Django Channels 配置

Django Channels 相关配置

  • 文件mysite\mysite\settings.pyINSTALLED_APPS中已添加channels

image-20250622085602862

  • 文件mysite\mysite\asgi.py

image-20250622085806319

TIP

Django Channels依赖Redis服务

前端实现

目录

代码目录:src\views\infra\webSocket

image-20250622091600868