1

Django 1.10.5 と Channels 1.0.2 で websocket を使用します。ユーザー トークンを使用して接続を開始していますが、そのユーザーの ID を使用しているすべてのユーザーを切断するように開始したいと考えています。ただし、コマンドは、接続を受け入れる前に実行されていても、ユーザー自身を閉じてしまいます。

これが私がそれをした方法です:

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})
4

2 に答える 2

0

接続の受け入れについては、こちらを参照してください: Django Channels を使用した Websocket

ユーザーごとの接続のみについては、ロジックに基づいて新しい接続を拒否するか、websocket.connect でクローズ メッセージを関連する reply_channel (またはチャネル) に送信する必要があります。ここで行います。

于 2017-01-25T09:20:12.827 に答える