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

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

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

Поскольку 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-клиентом .

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

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

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

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

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

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

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

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