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

2022-08-31 01:13:25

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

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

由于 Socket.IO 向后兼容并优雅地降级,因此我想将其用于WebSocket / AJAX轮询部分。

问题在于,默认情况下,Socket.IO 与 Node.JS后端一起使用。

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

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

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

我省略了Node + Sockets to Browser部分,因为这非常简单。

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

我知道DNode + PHP,但我无法想象如何组装所有内容 - Apache,PHP,Node,Socket.IO,DNode,因此它可以无缝地协同工作。

另外,我已经将这个PHP WebSockets服务器实现变成了一个laravel库。但是,这个库的问题在于它利用干净的WebSockets作为其客户端。而且,我找不到一种方法来破解它,Socket.IO 客户端


答案 1

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

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

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

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

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


答案 2

Elephant.IO 支持带有 Socket.IO 的PHP,所以看看它!


推荐