与“ws://127.0.0.1:8000/room/ws/tech”的 WebSocket 连接失败
我正在尝试学习如何使用通道创建实时 Django 应用程序并遵循 this 教程。
但是,当我尝试创建 Websocket 时,它在控制台中抛出此错误:
WebSocket connection to 'ws://127.0.0.1:8000/ws/tech/' failed
这就是我尝试创建 websocket 的方式 -
console.log("roomname: "+roomName);
const chatSocket = new WebSocket(
'ws://'
+ window.location.host
+ '/ws/'
+ roomName
+ '/'
);
请放心,url 已正确构建。当我将 url 部分替换为“ws://127.0.0.1:8000/room/ws/tech”并在浏览器控制台中手动运行时,它会引发同样的错误。
Channels 4.0.0 默认情况下不启动 ASGI 服务器。因此,尝试将“daphne”添加到 settings.py 中的 INSTALLED_APPS 中。
第一点
pip install -U 'channels[dapne]' channels-redis
然后在你的 Django 设置文件中:
INSTALLED_APPS = [
"daphne",
...
]
有关更多信息,请参阅 Channels 4.0.0 发行说明:https://channels.readthedocs.io/en/stable/releases/4.0.0.html?highlight=INSTALLED_APPS#release-notes
替代解决方案
将频道版本降低到3.0.5似乎有效。
尝试
pip uninstall channels
pip install channels==3.0.5
这是很棒的解决方案
pip uninstall channels
pip install channels==3.0.5