2015-04-05 5 views
0

Я создаю приложение для прямой трансляции. Пользователь может позвонить другому пользователю, если он/она находится в сети. Я могу регистрировать журнал, когда пользователь вошел в систему. Однако я ищу способ проверить, завершает ли пользователь/выходит из приложения. Любое предложение приветствуется.Проверьте, находится ли пользователь в сети Flask

+0

Предполагаю, что это должно быть помечено как [tag: flask], а не [tag: flash]? Или вы используете оба? – GoBusto

+0

@GoBusto Спасибо, что указал мне. Это была ошибка * auto *. – Dewsworld

ответ

1

1) Вы можете реализовать сердцебиения системы, в которой пользователи онлайн отправлять сообщения друг с другом, чтобы убедиться, что они живы

2) Если на выходе вы имеете в виду пользователь выбирает назначенную кнопку «бросить курить», то вам может просто отправить ответ другому пользователю говоря вы бросить

Я уверен, что есть много других способов сделать это, но это два пути, которые я узнал в ходе моей распределенной системы

0

Для этого вам необходимо использовать асинхронное соединение для каждого пользователя при входе в систему. Выйти Tornadi, который более подходит, чем колба для такого рода применений. Но если вы настаиваете на использовании фляжки, вам придется выяснить способ реализации асинхронной части системы с помощью Tornado и сделать ее сосуществовающей с Flask. Вы также можете использовать Python's asyncio module, если вы не хотите использовать Tornado, но вам придется создавать все с нуля, что в большинстве случаев не идеально.

0

Я думаю, что это зависит от того, что ваше определение «вышло» в контексте вашего приложения. как сказал пользователь1736436, если речь идет только о том, нажали ли кнопку «выйти из системы», это довольно просто. Конечно, если интернет-пользователи останавливаются или сбой браузера, вы не будете знать.

Если вы используете какое-то другое соединение в реальном времени, например websockets, вы можете определить его, чтобы определить, открыт ли этот сокет или нет. Реализации Websocket часто имеют какое-то свойство статуса, которое вы можете читать на стороне сервера (например, gevent-websocket сокеты имеют логический атрибут. Закрыто, которое вы можете проверить)

Если вы идете по бинту, вы, вероятно, в конечном итоге запускает его в Javascript, используя обратный вызов setInterval, и записывая какой-то процесс времени на сервере, чтобы предпринять какие-то действия, если вы не получите его какое-то время.