2012-08-31 72 views
15

我有一个使用laravel编写的PHP应用程序。基于Socket.IO的PHP应用程序+基于WebSocket的通知

现在,我要补充一点,从服务器推信息的实时通知系统 - >客户端,可以检索消息从客户推送 - >服务器。

由于Socket.IO是向后兼容的,并缓慢下降,我想使用它的WebSocket的/ AJAX轮询的一部分。

问题是,Socket.IO默认与Node.JS后端一起工作。

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

的问题是,如何发送从PHP到节点+ Sockets.IO的消息?

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

我已经离开了节点+插座到浏览器的一部分了,因为那是非常直截了当。

我见过利用Express.js + CURL and/or POST requests的例子,但是,是不是有这样做的一个较低的水平呢?

我知道DNode + PHP,但我无法想象如何组装所有东西 - Apache,PHP,Node,Socket.IO,DNode,所以它可以无缝协作。

此外,我已经转变成laravel库这个PHP WebSockets server实现。但是,这个库的问题在于它为客户端使用干净的WebSockets。而且,我找不到与Socket.IO client一起破解它的方法。

回答

8

本教程的using PHP and Socket.IO回答了您的问题的主要部分。

socket.io不是您唯一的选择。看看realtime web tech guide。从外观上看,目前最好的基于PHP的解决方案是Ratchet。这需要作为一个独立的过程来运行,所以你仍然会遇到跨进程通信问题。

常见的跨进程通信问题是使用消息队列。当你希望在Apache上运行的PHP应用程序被告知来自实时网络技术的事件时,问题就出现了。即使是从实时Web技术过程到apache服务器的调用,您可能也必须通过网络调用来完成此操作。

另一种选择是卸载实时通信像Pusher谁我工作的托管服务。

此最近的问题也是相关的,有一些有用的链接:Is native PHP support for Web Sockets available?

+0

该死的,那棘轮!它拥有! http://socketo.me/docs/push有关于如何从您的非棘轮应用推送的分步教程。我在几分钟内实现了该功能。 + 10为棘轮。 – jolt

+0

@leggetter哇,推杆看起来像在我这里真正的无脑。感谢分享这个。我想我会试试看。这更好,然后浪费我的时间来实现我自己的系统。 –

+0

是的,Pusher.com似乎是一个合理的路线! –

1

节点和apache/php之间没有简单的通信方式。所以你要么必须在节点中再次写入所有的功能(连接到mysql数据库等等),要么创建一个API来从节点调用并传递给套接字。

然而,你可以使用jQuery插件,如Jquery graceful websocketsthis php class来获得自己的websockets功能与jQuery和PHP,而不是使用sockets.io。