Как реализовать push на стороне сервера, чтобы клиент не пропускал push с сервера? - PullRequest
1 голос
/ 10 января 2011

Мне нужно разработать веб-приложение в режиме реального времени, в котором сервер должен информировать всех своих клиентов, если что-то плохое произошло с помощью аварийного сообщения.

Очень важно, чтобы клиент не должен был пропустить любой сигнал тревоги, т. Е. Даже если клиент временно не работает, он должен получать любые отправленные сигналы тревоги, если он снова подключен к сети.

Есть идеи, как реализовать такой механизм?Количество клиентов очень мало (5-10), поэтому производительность / пропускная способность могут не быть проблемой.

РЕДАКТИРОВАТЬ

Абсолютно пропущено то, что клиент имеетполучать сигналы тревоги в (почти) реальном времени, поэтому электронная почта может быть не лучшим решением.

Ответы [ 2 ]

4 голосов
/ 10 января 2011

Два возможных подхода:

  1. Пусть клиент подтвердит каждое полученное предупреждение и отследит состояние каждого клиента на сервере.
    • Чуть более высокие требования к пропускной способности.
    • Тупой клиент / умный сервер.
    • Гораздо более сложный сервер.
    • Предоставляет серверу полный контроль и надзор.
    • Подходит для "реального пуша" (вроде бинарного потока в реальном времени), если это то, что у вас есть.
  2. Отметка времени или другой уникальный идентификатор каждого оповещения, попросите клиента сообщить серверу, какой была последняя известная отметка времени, и попросите сервер сформулировать соответствующий ответ, чтобы клиент обновился.
    • RESTful подход.
    • Тупой сервер / умный клиент.
    • Сервер не обязательно знает статус каждого клиента.
    • Простая повторная синхронизация после отключения соединения.
    • Лучше подходит для архитектуры типа опроса.

Оптимум, вероятно, где-то посередине в гибридном решении.

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

Насколько я знаю, вы не можете толкать своих веб-клиентов.

Предполагая, что у вас есть список (на сервере) клиентов, каждый раз, когда у вас есть сообщение для отправки, записывайте факт, что оно требует чтения для каждого клиента в базе данных.
Напишите ваше клиентское приложение с несколькими JS, чтобы опросить сервер, запрашивая непрочитанные сообщения. Показать непрочитанные сообщения и затем написать подтверждение.

Для этого вам понадобится

  • база данных, содержащая всех клиентов, все сообщения и матрицу статуса сообщений для клиентов (чтение / подтверждение).
  • Какой-то веб-сервис для а) получения всех непрочитанных сообщений для данного клиента и б) для подтверждения сообщений для данного клиента.
  • Материал типа Ajax на стороне клиента для опроса
  • Динамически изменяйте HTML-код для отображения всех сообщений, которые вы получаете.
  • Материал типа Ajax, чтобы сервер знал, что вы показали сообщения, и не извлекал их снова для этого клиента.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...