Я нашел решение.Поправьте меня, если я ошибаюсь.
Сразу после установления соединения через веб-сокет отправьте токен на сервер.И в Сервере (в моем случае каналы django) в методе приема я выбираю этот токен и, если токен действителен, я обновляю информацию о соединении, и если токен недействителен, отключите соединение.
как-то так:
js файл:
const socket = new WebSocket('ws://localhost:8001/announcement');
socket.onopen = function open() {
console.log('WebSockets connection created.');
let authData = {'token': '<valid-token-here>'}
socket.send(JSON.stringify(authData));
};
и на стороне сервера (например, django):
def receive(self, text_data=None, bytes_data=None):
if self.scope['user'].id:
pass
else:
try:
# It means user is not authenticated yet.
data = json.loads(text_data)
if 'token' in data.keys():
token = data['token']
user = fetch_user_from_token(token)
self.scope['user'] = user
except Exception as e:
# Data is not valid, so close it.
print(e)
pass
if not self.scope['user'].id:
self.close()