Реализация приложения в реальном времени с использованием Redis и Faye

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

Моя заявка полностью написана на PHP,

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

Архитектура Ruby в реальном времени

Но я хочу использовать Faye библиотека для реализации уведомлений в реальном времени, потому что она имеет запасные варианты, и, как правило, я не собираюсь использовать Websockets потому что моя нагрузка очень низкая, и сначала я буду придерживаться long-polling механизм. Faye предоставляет удобный способ отключения и включения различных транспортных протоколов.

Вот как будет выглядеть моя архитектура

введите описание изображения здесь

Однако у меня есть один вопрос относительно общения с клиентом.

Рассмотрим следующий случай.

  1. Клиент загружает страницу через старый HTTP запрос к PHP приложение
  2. Сценарий на стороне клиента открывает соединение через веб-сокет / длинный опрос
  3. Другой человек отправляет уведомление, разместив его с помощью простого AJAX запрос
  4. Это уведомление сохраняется в базе данных и назначается целевому получателю.
  5. Уведомление отправлено на Redis база данных и потребляется Faye
  6. Уведомление отправлено клиенту, все хорошо.

Пока все хорошо, но мне нужно какое-то обратное общение, например, когда клиент отклоняет событие.
Как это должно быть реализовано, если я отправлю это действие обратно, используя Faye или это должно быть отправлено непосредственно PHP приложение. В случае отправки события обратно с помощью Faye Мне нужно уведомить мой PHP Заявление о том, что событие было замечено и отклонено. Конечно, я могу использовать ту же базу данных из приложения Ruby, что и приложение PHP, но это связывает эти два приложения.

Не могли бы вы предложить правильный способ реализации этого?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]