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

Django WebSocket路径找不到求助:React+Django连接失败

解决Django + React WebSocket 404错误的方案

核心问题排查与修复

1. 项目名称不匹配导致ASGI配置失效

你的asgi.py和settings.py存在项目名称不一致的问题:

  • asgi.py中设置的DJANGO_SETTINGS_MODULE为myproject_project.settings
  • settings.py中ASGI_APPLICATION配置为agonet_project.asgi.application

这种不一致会导致Django无法正确加载ASGI路由配置,必须统一项目名称:
如果你的项目实际名称是agonet_project,修改asgi.py中的对应行:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'agonet_project.settings')

2. 使用ASGI服务器启动项目

Django自带的python manage.py runserver是WSGI服务器,不支持WebSocket协议。必须切换到ASGI服务器启动项目:

  • 安装daphne:
    pip install daphne
    
  • 用daphne启动项目:
    daphne agonet_project.asgi:application
    
    或使用uvicorn:
    pip install uvicorn
    uvicorn agonet_project.asgi:application
    

3. 修复前端WebSocket代码错误

前端代码中的ws.setRequestHeader('Host', window.location.host);是错误的——WebSocket API没有setRequestHeader方法,这会引发前端报错,虽不是404的直接原因,但会影响连接逻辑。删除该行即可:

const ws = new WebSocket('ws://127.0.0.1:8000/ws/flow/');

ws.onopen = () => {
  console.log('WebSocket connection opened.');
  ws.send(JSON.stringify({ message: 'Hello, server!' }));
};

ws.onmessage = (event) => {
  const message = JSON.parse(event.data);
  console.log('Received message:', message);
};

ws.onclose = () => {
  console.log('WebSocket connection closed.');
};

export default ws;

4. 验证路由配置

当前flow/routing.py的路由配置是正确的,修改完上述配置并启动ASGI服务器后,重新测试WebSocket连接即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:18:26