PHP应用程序+Socket.IO上基于WebSocket的通知


PHP application + WebSocket based notifications over Socket.IO

我有一个使用laravel用PHP编写的web应用程序。

现在,我必须添加实时通知系统,该系统从服务器->客户端推送消息,并可以检索从客户端->服务器推送的消息。

由于Socket.IO是向后兼容的,并且降级很好,所以我想将其用于WebSocket/AAJAX轮询部分。

问题是Socket.IO默认情况下与Node.JS后端配合使用。

我有对服务器的root访问权限,并行运行(Apache和Node)或添加任何额外内容都没有问题。

问题是,如何从PHP向Node+Sockets.IO发送消息

然后,如何将消息从Sockets.IO+Node传输到PHP

我省略了Node+Sockets to Browser部分,因为这是非常直接的。

我看到过使用Express.js+CURL和/或POST请求的例子,但是,难道没有更低级别的方法吗?

我知道DNode+PHP,但我无法想象如何组装所有东西——Apache、PHP、Node、Socket.IO、DNode,这样它就能无缝地协同工作。

此外,我已经将这个PHP WebSockets服务器实现转换为一个laravel库。不过,这个库的问题在于,它为客户端使用了干净的WebSockets。而且,我找不到一种方法来破解它与Socket.IO客户端。

这个关于使用PHP和Socket.IO的教程回答了问题的主要部分。

socket.io不是你唯一的选择。看看实时网络技术指南。从外观上看,目前最好的基于PHP的解决方案是Ratchet。这需要作为一个单独的进程运行,因此您仍然会遇到跨进程通信问题。

常见的跨进程通信问题是使用消息队列。当您希望在Apache上运行的PHP应用程序从实时web技术获悉事件时,问题就出现了。您可能必须通过网络调用来实现这一点,即使这是从实时网络技术流程到apache服务器的调用。

另一种选择是将实时通信卸载到我工作的Pusher这样的托管服务。

这个最近的问题也很相关,并且有一些有用的链接:本地PHP对Web套接字的支持可用吗?

Elephant.IO通过Socket.IO支持PHP,请看一看!

在node和apache.php之间没有一种简单的通信方式。因此,您要么必须在节点中重新编写所有功能(连接到mysql数据库等),要么创建一个API从节点调用并传递到套接字。

然而,您可以使用像jquery优雅的websockets和这个php类这样的jquery插件,通过jquery和php获得您自己的websocket功能,而不是使用sockets.io.