Verwendung von Websocket mit Django 1.10.5 mit Channels 1.0.2. Ich öffne eine Verbindung mit einem Benutzer-Token, und ich möchte die Öffnung, um jeden zu trennen, der die ID dieses Benutzers verwendet. Der Befehl, selbst wenn er ausgeführt wird, bevor die Verbindung akzeptiert wird, schließt jedoch den Benutzer selbst.Belassen Sie nur eine aktive Verbindung pro Benutzer
Hier ist, wie ich es tat:
def get_group(user):
if isinstance(user, User):
uuid = str(user.uuid)
return Group('user-%s' % uuid)
@channel_session
def websocket_connect(message):
user = CachedOAuth2Authentication().authenticate(socket_messeger=message)
if user:
# Do not use more than one device.
get_group(user).send({"close": True})
message.channel_session['user'] = user
get_group(user).add(message.reply_channel)
message.reply_channel.send({"accept": True})
else:
message.reply_channel.send({"close": True})