2016-09-12 5 views
0

Возможно ли получить доступ к списку каналов, добавленных в группу с django-каналами?Можно ли перечислять каналы, хранящиеся в группе?

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 и я легко удалось перечислить подключенных пользователей для Group путем создания Room (что обрабатывать Group управления/создание, channel добавление/удаление .. .) и который предоставляет метод get_users(), который позволяет мне достичь того, что я искал.

Он также обеспечивает способ очистки добавленных каналов, которые не удаляются, если сервер выходит из строя (что не приведет к запуску потребителя ws_disconnect, который используется для удаления этих каналов из группы). Он предоставляет задачи prune_presence и prune_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

Я знаю это, но это не относится только к текущему параметру потребителя сообщения ? то, что я получил с помощью функции 'get_channel_layer(), group_channels()', было dictionnary, связывающее строки с float: ('{'websocket.send! DLCNWvEM': 1473714104.796983}'). Как я могу получить доступ к файлам для каждого канала? Например, чтобы указать подключенных пользователей? – vmonteco

 Смежные вопросы

  • Нет связанных вопросов^_^