You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django WebSocket无法连接:/ws/socket-server/路径404错误排查

Django WebSocket连接报错Not Found: /ws/socket-server/的排查与解决

你遇到的Not Found: /ws/socket-server/错误,核心原因大概率是未使用ASGI服务器启动项目或路由匹配不精确,以下是具体排查和修复步骤:

1. 必须用ASGI服务器启动项目

Django默认的python manage.py runserver是WSGI服务器,不支持WebSocket协议,必须用Channels配套的ASGI服务器(如daphne)启动:

  • 安装daphne依赖:
pip install daphne
  • 替换启动命令(端口和你之前用runserver的保持一致,比如8000):
python -m daphne tev.asgi:application -p 8000

2. 修正WebSocket路由的正则匹配

你的main/routing.py里的正则缺少起始和结束锚点,可能导致路由匹配失败,修改为:

from django.urls import re_path 
from main import consumers

websocket_urlpatterns = [
    re_path(r'^ws/socket-server/$', consumers.ChatConsumer.as_asgi())
]

(添加^和$,确保精确匹配/ws/socket-server/路径)

3. 补充CHANNEL_LAYERS配置(可选但建议)

由于你的Consumer中用到了channel_layer.group_add,未配置CHANNEL_LAYERS会导致后续消息发送报错,建议在settings.py中添加:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels.layers.InMemoryChannelLayer"
    }
}

(内存层适合本地测试,生产环境可替换为Redis等分布式后端)

4. 验证HTML中的WebSocket地址

在浏览器控制台打印url变量,确认地址格式正确(比如ws://localhost:8000/ws/socket-server/),确保端口和ASGI服务器启动的端口一致。

按以上步骤调整后,重新启动ASGI服务器,即可解决WebSocket连接的Not Found问题。

内容的提问来源于stack exchange,提问作者Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:32:14