Я хочу добавить поддержку событий на стороне сервера в CppCMS . Я понимаю техническую часть того, что делать на
уровень связи: клиент отправляет длинный опрос XmlHTTPRequest и ожидает ответа,
сервер принимает соединение и не отвечает, пока не произойдет событие на стороне сервера и не отправит
ответ клиенту. Клиент повторяет процедуру.
Однако для большинства веб-разработчиков это слишком низкий уровень. Есть много вопросов: как управлять событиями, как управлять соединениями и т. Д.
Я думал о двух возможных моделях:
Определены некоторые именованные события и сторона сервера,
например, «Новое сообщение в чате № 134»;
когда запрос принят, серверное приложение проверяет сообщения
в комнате (например в БД) и если нет новых сообщений для клиента
он подписывается на событие и ожидает его.
Когда какой-либо другой клиент отправляет данные на сервер, он уведомляет все приложения о
«Новое сообщение в чате № 134», и они просыпаются и отправляют эти сообщения
клиентам и т. д.
Эта модель по-прежнему выглядит довольно «низкоуровневой» моделью, но скрывает все
методы уведомления.
Другим вариантом является определение именованных очередей, поэтому каждый клиент создает такой
Очередь при подключении к серверу и ждет новых сообщений. Когда какой-то клиент
отправляет новое сообщение в «Комнату чата № 134», на стороне сервера оно транслируется
во все очереди, подключенные к этой "Комнате чата № 134", и сообщение доставлено
клиенту.
Однако возникает много вопросов:
- Как мне управлять очередями и уровнем сеанса на уровне одной страницы?
- Как удалить очереди и создать для них тайм-ауты?
- Что произойдет, если более чем одно «окно» будет подписано на одну очередь?
Создать постоянный объект на стороне сервера, который склеивает между событиями на стороне сервера
и пользовательские события. Он может связываться по отдельным запросам XHR, которые
перенаправлен на него.
Таким образом, клиент (JavaScript) регистрирует события и ждет их с помощью XHR
и серверные отправленные уведомления о событиях, пока страница не будет перестроена.
Итак, я хотел бы знать, что является наиболее популярным и рекомендуемым
Модели API за технологиями push на стороне сервера?
Спасибо
Редактировать : добавлен третий параметр