2016-09-12 1 views
0

グループに追加されたチャンネルのリストにdjango-channelsでアクセスできますか?グループに保存されているチャンネルを一覧表示することはできますか?

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

EDIT:インスタンスの接続しているユーザーのリストのように、すべてのチャネルのセッションへのアクセス権を持っている私は何を達成しようとする

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

EDIT 2:

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

答えて

0

私はdjango-channels-presenceをテストしていると私は簡単に追加/削除、channelRoom(そのハンドルGroup管理/作成を作成することにより、Group用接続しているユーザーの一覧を表示することに成功した... ..です)、それは私が探していたものを達成するための方法を提供するget_users()です。

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

3

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

# 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>') 
+0

ニース!関連するセッションやユーザーのような情報にアクセスすることは可能ですか? :) – vmonteco

+0

チャンネルは '@ channel_session_user_from_http'デコレータと一緒に出荷され、消費者関数では' message.user'からユーザーを得ることができます。 –

+0

私はそれを知っていますが、それは現在の 'message'消費者のパラメータ?'get_channel_layer()、group_channels()'関数で得られたものは、浮動小数点数に関連する辞書であった:( '{'websocket.send!dLCNWvEM':1473714104.796983})。どのように各チャンネルの麻痺にアクセスできますか?たとえば、接続しているユーザーを一覧表示するには? – vmonteco

関連する問題