是否可以列出存储在组中的频道?

vmo*_*eco 2 django django-channels django-channels-presence

是否可以使用django-channels访问添加到组中的频道列表?

def consumer(message):
    Group("group_name").add(message.reply_channel)
    channel_list = Group("group_name").???
Run Code Online (Sandbox Code Playgroud)

编辑:

我试图实现的目标是访问所有通道的会话,例如已连接用户的列表。

到目前为止,我使用列出连接的基于数据库的系统。但是,如果服务器在不执行ws_disconnect使用者的情况下关闭,则这些连接对象将保留在数据库中,而我不希望这样做。

编辑2:

要列出连接的用户,我发现django-channels-presence。我会测试。

Raj*_*mon 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>')
Run Code Online (Sandbox Code Playgroud)


vmo*_*eco 0

我已经测试过,并且通过创建 a (处理管理/创建、添加/删除...)django-channels-presence轻松成功地列出了 a 的连接用户,并且提供了一种允许我实现我正在寻找的内容的方法。GroupRoomGroupchannelget_users()

它还提供了一种方法来清理在服务器崩溃时不会删除的添加通道(这不会触发用于从组中删除这些通道的 ws_disconnect 使用者)。它提供了清理过期通道的任务prune_presenceprune_room

  • 没有任何片段的答案是没有用的 (3认同)