Обнаружение (на стороне сервера), когда клиент Flex отключается от места назначения BlazeDS - PullRequest
2 голосов
/ 24 февраля 2010

Я хотел бы знать, возможно ли легко обнаружить (на стороне сервера), когда клиенты Flex отключаются от места назначения BlazeDS, пожалуйста? Мой сценарий просто, что я хотел бы попробовать и использовать это, чтобы выяснить, как долго каждый из моих клиентов подключен к каждой сессии. Мне также нужно уметь различать клиентов (т.е. не просто подсчитывать количество подключенных в данный момент клиентов, которое я вижу в ds-console).

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

Может кто-нибудь предложить, если есть простой способ сделать этот тип мониторинга на стороне сервера, пожалуйста.

Большое спасибо, Alex

Ответы [ 3 ]

1 голос
/ 05 мая 2010

Реализация собственного адаптера, расширяющего "extends ServiceAdapter"

Затем установите функцию:

@ Override public boolean handlesSubscription () { вернуть истину; } Таким образом, вы можете обрабатывать подписку и отписку

Затем вы можете управлять ими в функции управления:

@ Override управление публичными объектами (CommandMessage commandMessage) {

switch (commandMessage.getOperation ()) { case CommandMessage.SUBSCRIBE_OPERATION: перерыв; case CommandMessage.UNSUBSCRIBE_OPERATION: перерыв; }

}

Вы также можете ловить различные команды.

Надеюсь, эта помощь

0 голосов
/ 25 февраля 2010

Единственный способ сделать это правильно - так или иначе реализовать механизм сердцебиения. Вы можете использовать keep-alive от http в сочетании с истечением сеанса, как предлагалось ранее, но я считаю, что нужно использовать механизм обмена сообщениями от BlazeDS (отправка сообщения в X секунд). Вы можете контролировать временной интервал и другие аспекты (возможно, вы хотите определить, не выполняет ли клиент какие-либо действия в течение нескольких часов, и аннулировать сеанс, даже если ваш клиент все еще подключен).

Если вы хотите получать мгновенные уведомления (приложение чата), когда клиент отключается, решение должно иметь сокет (RTMP) или некоторую эмуляцию (потоковую передачу http), которая мгновенно обнаружит, если клиент отключен, однако это отключение может быть временным (возможно, сеть не работала в течение одной секунды, и после этого все в порядке, и вы также должны это обнаружить).

0 голосов
/ 25 февраля 2010

Я бы предположил, что BlazeDS предоставит обратный вызов или событие, когда клиент отключится, но я не работал с Blaze, так что это будет только предположение. Первым шагом было бы проверить документацию, чтобы узнать, так ли это, так как это будет вашим лучшим выбором.

То, что я сделал в случаях, когда нет события отключения (или оно ненадежно), - это добавление сообщения поддержки активности. Например, клиент будет настроен на отправку сообщения keepalive каждые 30 секунд, и если сервер идет не более, скажем, 2 минуты, не видя keepalive, он предполагает, что клиент отключился. Это позволит вам различать разных клиентов, и вы можете поиграть с тарифом и временем проверки, чтобы получить то, что вас устраивает.

...