Событие Capturing клиента, разъединяющегося! - Gevent/Python

Я использую долго опрос для чата с gevent. Я использую Event.wait () при ожидании новых сообщений, которые будут отправлены на чате.


Я хотел бы обработать случай, который клиент разъединяет с некоторой функциональностью:

например, Возврат "клиент разъединился" как сообщение для других пользователей чата


Действительно ли это возможно?=)

7
задан RadiantHex 26 July 2010 в 12:31
поделиться

2 ответа

Это зависит от того, какой сервер WSGI вы используете. AFAIK gevent.wsgi никоим образом не уведомит ваш обработчик, когда клиент закрывает соединение, потому что libevent-http этого не делает. Однако с gevent.pywsgi это должно быть возможно. Вам, вероятно, потребуется запустить дополнительный гринлет для отслеживания состояния сокета и каким-то образом уведомить гринлет, который запускает обработчик, например убив его. Однако я мог упустить более простой способ сделать это.

1
ответ дан 7 December 2019 в 12:13
поделиться

Это полный удар в темноте, поскольку я никогда не использовал gevent, но отключение клиента не произойдет просто при закрытии сокета. Так что, возможно, что-то вроде этого сработает:

if not Event.wait():
    # Client has disconnected, do your magic here!
    return Chat({'status': 'client x has disconnected'})
1
ответ дан 7 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: