[英]WebSocket connection error when creating a chat application with Django
我正在开发一个类似于 whatsapp web 克隆的聊天应用程序。 我一直在处理 websocket 连接,因为它无法连接到指定地址。 我收到错误WebSocket connection to 'ws://127.0.0.1:8000/ws/2/' failed:
。 指定的 url 是因为我在 consumers.py 文件中使用用户 id 创建房间名称。
这是 consumers.py 文件的一部分:
class PersonalChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
my_id = self.scope['user'].id
other_user_id = self.scope['url_route']['kwargs']['id']
if int(my_id) > int(other_user_id):
self.room_name = f'{my_id}-{other_user_id}'
else:
self.room_name = f'{other_user_id}-{my_id}'
self.room_group_name = 'chat_%s' % self.room_name
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name
)
在 asgi.py 文件中,我有这段代码;
application = ProtocolTypeRouter({
'websocket': AuthMiddlewareStack(
URLRouter([
path('ws/<int:id>/', PersonalChatConsumer)
])
)
})
这也是处理 websocket 连接的 javascript 文件的一部分:
const id = JSON.parse(document.getElementById('json-username').textContent);
const message_username = JSON.parse(document.getElementById('json-message-username').textContent);
const socket = new WebSocket(
'ws://'
+ window.location.host
+ '/ws/'
+ id
+ '/'
);
VsCode 控制台中的错误消息指出Not Found: /ws/2/
。 这里还有 urls 文件:
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include(('accounts.urls', 'accounts'), namespace='accounts')),
path('', index, name='home'),
path('<str:username>/', chatPage, name='chat'),
]
任何帮助将不胜感激。 谢谢
我终于设法解决了这个问题。 我意识到除了 redis 服务器之外,一切正常。 我通过直接运行 redis-server 而不是使用 docker 解决了这个问题。这是为我提供解决方案的问题的链接: 在 Django 频道上避免 Docker 的方式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.