Добавление Node.js (для уведомлений в режиме реального времени) к существующему PHP-приложению

У меня есть существующее приложение PHP, которому необходимо добавить уведомления в реальном времени. Для этого я установил node.js (намереваясь добавить socket.io для всех функций реального времени)

Однако. Несмотря на то, что последние три часа проводили исследования и пытались понять, как интегрировать эти два, я не стал ближе к пониманию.

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

  • апаш
  • PHP
  • Nginx (как обратный прокси-сервер для Apache для всех статических материалов, таких как images / css-файлы и т. Д.)
  • MySQL

У меня уже написан код, который отправляет событие от клиента на PHP и вставляет уведомление в базу данных. Когда получатель обновляет свою страницу, они, конечно, видят уведомление. Мне просто нужно, чтобы node.js обрабатывал запрос в реальном времени клиенту, но я не понимаю, как его настроить.

То, что мне действительно нужно знать, учитывая этот сценарий, следующее:

  1. Как / когда соединение node.js / websocket с клиентом создается, учитывая, что я хочу, чтобы все содержимое все еще было подано через Apache / PHP?
  2. Как я могу отправить сообщение с PHP на Node.js и проинструктировать его о том, чтобы отправить уведомление клиенту?
  3. Какие изменения в конце концов мне нужно сделать для моей настройки, чтобы поддержать это?

В конечном итоге я хотел бы просто запустить функцию PHP и ожидать, что node.js / socket.io / websockets будут вызывать уведомление клиенту. Я просто понятия не имею, как туда добраться.

Заранее благодарим за любые примеры / информацию / руководства.

В этом случае я создам сервер Node.js с Socket.IO . Это дает вам кросс-браузерный метод для отправки данных в режиме реального времени клиентам.

Когда клиент загружает вашу страницу PHP, у вас будет тэг <script> указывающий на ваш сервер Node.js для загрузки Socket.IO. После загрузки клиент Socket.IO JavaScript подключится к вашему серверу Socket.IO Node.js и дождитесь, пока события будут выпущены.

Теперь, поскольку вы хотите, чтобы эти события отправлялись с PHP, вам нужен канал связи между вашим PHP-приложением и Node.js. Я рекомендую использовать Redis pub / sub для этого. В основном, ваше приложение PHP публикует сообщение, и ваши серверы Node.js, подписавшиеся на него, получат его. Затем эти серверы могут сразу передать сообщение клиенту, чтобы получить больше данных с PHP. (Я думаю, вы обнаружите, что было бы так же просто, чтобы ваш сервер Node.js просто отправлял эти данные в первую очередь.)

Вы можете поместить Node.js за свой сервер Nginx, если хотите, но вам нужна последняя и самая большая версия для поддержки настоящих веб-сокетов .