2011-02-05 2 views
1

я хотел бы реализовать панель что веб-основанный и имеет целый ряд показателей, где один меняется каждую минуту и ​​другие изменения, как два раза в день. Через AJAX метрики должны обновляться как можно быстрее, если произошли изменения. Это означает, что одна и та же страница будет работать как минимум несколько часов.Внедрение в реальном времени, веб-панель

Что было бы самым эффективным способом (с точки зрения технологии/реализации) иметь дело с этим в мире Java?

ответ

1

Ну, есть два очевидных варианта здесь:

  • Comet, aka long polling: запрос AJAX удерживается открытым сервером до времени ожидания после нескольких минут или пока происходит изменение, в зависимости от того не произойдет первым. Недостатком этого является то, что обработка многих соединений может быть сложной задачей; кроме всего прочего, вам не понадобится типичная типичная «одна нить на запрос, обработка синхронно», которая является общей.
  • Частый опрос со страницы AJAX, где каждый запрос возвращается быстро. Это, вероятно, будет проще реализовать, но менее эффективно в сетевых терминах (гораздо больше запросов) и будет менее оперативным; вы могли бы отправить запрос каждые 5 секунд, например, но если у вас много пользователей, у вас будет много трафика.

Лучшее решение будет зависеть от того, сколько у вас пользователей. Если будет только несколько клиентов, вы можете захотеть пойти на «опрос каждые 5 секунд» - или даже возможно долгий опрос с потоком за запрос (хотя это, вероятно, будет немного сложнее реализовать) , Если у вас много клиентов, я бы обязательно пошел с длинным опросом, но вам нужно посмотреть, как отделить поток от соединения в вашей конкретной серверной среде.

+0

Я не думаю, что есть какие-либо причины для опроса каждые пять секунд: показатели меняются только раз в минуту. Простой опрос AJAX один или два раза в минуту должен быть достаточным. Если метрики изменяются * ровно * один раз в минуту, записывайте обновление с момента последнего обновления по первому запросу, а затем последующие запросы могут быть синхронизированы с обновлениями на стороне сервера. –

+0

@Gabriel: Я предполагал, что «раз в минуту» было грубым, а не точным ... и если есть * много * других показателей, вы не знаете, когда они произойдут. ОП особо указывает, что изменения должны отображаться «как можно быстрее». Но да, очевидно, если вы можете уйти с 30-секундной задержкой, это будет более эффективно. –

0

Я думаю, что время Комета ушло. Популярный протокол Socket.IO. И я предлагаю использовать netty-socketio, он поддерживает протоколы длинного опроса и websocket. javascript, ios, android Клиенты также доступны.

Смежные вопросы