PHP-приложение + уведомления на основе WebSocket через Socket.IO

У меня есть веб-приложение, написанное на PHP с использованием laravel.

Теперь мне нужно добавить систему уведомлений в реальном времени, которая выталкивает сообщения с сервера → клиент и может извлекать сообщения, отправленные с сервера клиента → .

Так как Socket.IO обратная совместимость и изящно изнашивается, я хочу использовать ее для части опроса WebSocket/AJAX.

Проблема в том, что Socket.IO по умолчанию работает с бэкэндом Node.JS.

У меня есть root-доступ к серверу, нет проблем с одновременным запуском обоих (Apache и Node) или добавлением чего-либо дополнительного.

Проблема в том, что как отправить сообщение с PHP на Node + Sockets.IO?

И затем, , как мне передать сообщение из Sockets.IO + Node в PHP?

Я оставил Node + Sockets для части браузера, потому что это довольно прямолинейно.

Я видел примеры, используя Express.js + CURL и/или POST-запросы, но нет ли способа более низкого уровня?

Я знаю DNode + PHP, но я не могу себе представить, как собрать все - Apache, PHP, Node, Socket. IO, DNode, чтобы он работал вместе без проблем.

Кроме того, я превратил в библиотеку laravel этот сервер PHP WebSockets. Проблема с этой библиотекой заключается в том, что она использует чистые WebSockets для нее на стороне клиента. И я не смог найти способ взломать его вместе с Socket.IO client.

Ответы

Ответ 1

Этот учебник по с использованием PHP и Socket.IO отвечает на основную часть вашего вопроса.

socket.io не является вашим единственным вариантом. Посмотрите руководство по веб-технологиям в режиме реального времени. По его мнению, лучшее решение на базе PHP теперь Ratchet. Это нужно запустить как отдельный процесс, так что у вас все еще будет проблема с перекрестными процессами.

Общая проблема связи с перекрестными процессами заключается в использовании очередей сообщений. Затем возникает проблема, когда вы хотите, чтобы ваше приложение PHP, работающее на Apache, было проинформировано о событиях из веб-технологий реального времени. Вероятно, вам придется сделать это через веб-звонок, даже если это вызов веб-технологического процесса в реальном времени на сервер Apache.

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

Этот недавний вопрос также уместен и содержит некоторые полезные ссылки: Доступна ли встроенная поддержка PHP для веб-сокетов?

Ответ 2

Elephant.IO поддерживает PHP с Socket.IO, поэтому взгляните на это!

Ответ 3

Существует не простой способ связи между node и apache/php. Таким образом, вам нужно будет снова написать все свои функции в node (подключение к базам данных mysql и т.д.) Или создать API для вызова из node и передать его в сокеты.

Однако вы могли бы использовать плагин jquery, например JQuery изящные веб-сайты и this php class, чтобы получить свои собственные функции websockets с jquery и php, вместо использования sockets.io.