#django-channels
#django-каналы
Вопрос:
В какой-то момент вы хотите закрыть соединение по имени канала или выгнать пользователя? Я не могу использовать self.close, поскольку я не нахожусь на этом пользователе в тот момент, когда хочу его выгнать. PS group_discard не закрывает соединение.
Ответ №1:
Вы можете отправить событие в websocket.diconnect так же, как и другие потребительские методы:
self.channel_layer.send(
<channel_name>,
{
'type': 'websocket.disconnect',
'code': <code>,
}
)
Комментарии:
1. Да, я думаю, что методов по умолчанию не существует, и процесс будет следующим: 1) Реализовать закрытие сокета на интерфейсе, отправив команду из каналов. (именно то, что вы опубликовали) 2) Удалить пользователя из channel_group 3) В методе приема (возможно, и подключения) добавьте обработчик, всякий раз, когда от этого пользователя поступает сообщение, закройте сокет.