GWT Server Push с использованием продолжений Jetty? - PullRequest
2 голосов
/ 25 января 2011

Я должен реализовать веб-приложение, в котором пользователь входит в систему и тем самым регистрирует какие-либо события (в данном случае, тревоги).При возникновении тревоги сервер должен передать тревогу всем клиентам.

В настоящее время я использую

  • GWT на стороне клиента
  • Jetty на стороне сервера

Является ли реализация push сервера с помощью Jetty Continuations хорошей идеей?Мои требования:

  • количество клиентов будет довольно небольшим (<20), но может увеличиться в будущем </li>
  • тревоги не должны быть потеряны (т. Е. Если клиент будет недоступен), он не должен пропустить ни одной тревоги)
  • если клиент выходит из строя, другие клиенты должны быть проинформированы об этом (или, по крайней мере, администратор должен получить какое-то уведомление, например, по почте).

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Основная причина использования Comet (например, Jetty Continuations) заключается в том, что он позволяет снизить частоту опроса.Другими словами: вы можете достичь того же без Comet, используя частые опросы на стороне клиента.Выбор альтернативы зависит от характеристик вашего приложения - в зависимости от этого каждая альтернатива может быть более или менее эффективной, чем другая!

В вашем случае, так как вам нужны уведомления, когда клиент выходит из строя, он делаетсмысл использовать частые опросы.Комета (длительный опрос) не очень подходит для этой задачи: из-за ее принципа может потребоваться много времени, прежде чем клиент отправит новый запрос.И получение нового запроса - это единственный способ узнать, что клиент все еще жив (помните, что веб-сервер - независимо от того, является ли Comet или нет - никогда не сможет отправить запрос клиенту).

1 голос
/ 25 января 2011

Ваше требование гласит, что аварийные сигналы не должны быть утеряны, что подразумевает более сложное решение, чем длительный опрос или частый опрос.

Ваш клиент должен отправить сообщение с подтверждением на сервер, поскольку ваш пользователь может закрыть приложение сразу после получения сообщения о тревоге, он может потерять эту тревогу. Кроме того, ваш пользователь должен нажать тревожное сообщение, чтобы подтвердить сервер. Вы можете установить ограничение для подтверждения, если клиент не отправляет подтверждающее сообщение, то вы можете предположить, что сигнал тревоги был потерян.

Длительный опрос с подтверждением algortihm будет моим выбором для решения вашей проблемы.

...