我有一个使用laravel用PHP编写的Web应用程序。
现在,我必须添加实时通知系统,该系统可以从服务器->客户端推送消息,并且可以检索从客户端->服务器推送的消息。
由于Socket.IO向后兼容且性能下降,因此我想将其用于WebSocket / AJAX轮询部分。
问题是默认情况下Socket.IO可与Node.JS后端一起使用。
我具有对服务器的root访问权限,并行运行(Apache和Node)或添加任何其他东西都没有问题。
问题是, 如何从PHP向Node + Sockets.IO发送消息?
然后, 如何将消息从Sockets.IO + Node传输到PHP?
我将“节点+套接字到浏览器”部分省略了,因为这很简单。
我已经看到了使用Express.js +CURL和/或POST请求的示例,但是,难道没有更低级别的方法吗?
我知道DNode + PHP,但是我无法想象如何组装所有东西-Apache,PHP,Node,Socket.IO,DNode,以便它们可以无缝地协同工作。
另外,我已经将此PHP WebSockets服务器实现转换为laravel库。但是,该库的问题在于它在客户端使用了干净的WebSockets。而且,我找不到与Socket.IOclient一起破解它的方法。
本教程使用PHP和Socket.IO回答了问题的主要部分。
socket.io不是您唯一的选择。看一下实时网络技术指南。从外观上看,目前最好的基于PHP的解决方案是Ratchet。这需要作为一个单独的进程运行,因此您仍然会遇到跨进程通信问题。
常见的跨进程通信问题是使用消息队列。然后,当您希望您的Apache上运行的PHP应用程序被告知实时Web技术的事件时,就会出现问题。即使是从实时Web技术流程到apache服务器的调用,您也可能必须通过Web调用来执行此操作。
另一种选择是将实时通信卸载到我工作的托管服务(如Pusher)中。