5

django-channels を使用してグループに追加されたチャネルのリストにアクセスすることは可能ですか?

def consumer(message):
    Group("group_name").add(message.reply_channel)
    channel_list = Group("group_name").???

編集:

私が達成しようとしているのは、たとえば接続ユーザーのリストなど、すべてのチャネルのセッションにアクセスできるようにすることです。

これまでのところ、接続を一覧表示するデータベース ベースのシステムを使用しています。しかし、ws_disconnect コンシューマーを実行せずにサーバーがシャットダウンした場合、これらの接続オブジェクトはデータベースに残ります。これは望ましくありません。

編集2:

接続しているユーザーを一覧表示するには、 を見つけましdjango-channels-presenceた。テストします。

4

4 に答える 4

6

ええ、それは可能です。そして、簡単なハックは...

# Get channel_layer function
from channels.asgi import get_channel_layer

# passing group_channel takes channel name
channel_layer = get_channel_layer()
ch_group_list = channel_layer.group_channels('<your group name>')
于 2016-09-12T09:22:06.820 に答える
0

私はテストしましたが、 (管理/作成、追加/削除を処理する...)を作成することによりdjango-channels-presence、接続されているユーザーを簡単にリストすることに成功し、探していたものを達成できる方法を提供します。GroupRoomGroupchannelget_users()

また、サーバーがクラッシュした場合に削除されない、追加されたチャネルを消去する方法も提供します (これらのチャネルをグループから削除するために使用される ws_disconnect コンシューマをトリガーしません)。期限切れのチャネルを消去するprune_presenceおよびタスクを提供します。prune_room

于 2016-09-25T23:10:28.893 に答える