一尘不染

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

node.js

我有一个使用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一起破解它的方法。


阅读 202

收藏
2020-07-07

共1个答案

一尘不染

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

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

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

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

2020-07-07