Django Channels WebSocket Authentication with React: Застряли на Handshake
Я интегрирую Django Channels WebSockets в свое приложение React и столкнулся с проблемой аутентификации пользователей во время рукопожатия WebSocket. Несмотря на то, что все настроено в соответствии с документацией, мое WebSocket-соединение не распознает аутентифицированных пользователей.
Вот как выглядит моя установка:
Django Channels (consumers.py):
from channels.generic.websocket import AsyncWebsocketConsumer
import json
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name
# Join room group
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name
)
await self.accept()
React (Chat.js):
import React, { useEffect } from 'react';
import { w3cwebsocket as W3CWebSocket } from "websocket";
const client = new W3CWebSocket('ws://127.0.0.1:8000/ws/chat/room_name/');
const Chat = () => {
useEffect(() => {
client.onopen = () => {
console.log('WebSocket Client Connected');
};
client.onmessage = (message) => {
console.log(message);
};
}, []);
return <div>Chat Component</div>;
};
export default Chat;
Я передаю идентификатор сессии/токен через URL WebSocket, но Django не аутентифицирует пользователя на WebSocket-соединении. Я пропустил часть, где я могу аутентифицировать WebSocket-запрос в Django Channels на основе идентификатора сессии или токена, предоставленного приложением React.
Кто-нибудь сталкивался с подобной проблемой или знает, что мне нужно сделать по-другому? Любая помощь или руководство будут очень признательны!