Django 通道:WebSocket 连接失败

问题描述 投票:0回答:2

与“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”并在浏览器控制台中手动运行时,它会引发同样的错误。

javascript django websocket django-channels
2个回答
2
投票

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 

0
投票

这是很棒的解决方案

pip uninstall channels
pip install channels==3.0.5 

感谢https://stackoverflow.com/users/14228861/k-m-emon-ahmed

© www.soinside.com 2019 - 2024. All rights reserved.