将Node.js(用于实时通知)添加到现有的PHP应用程序


Adding Node.js (for real-time notifications) to an existing PHP application

我有一个现有的PHP应用程序,我需要向其添加实时通知。为了实现这一点,我已经安装了node.js(打算添加套接字)。IO用于所有实时功能)

然而

。尽管我花了三个小时研究并试图弄清楚如何将两者结合起来,但我发现自己并没有更接近于获得理解。

我目前正在使用以下内容:

    Apache PHP
  • Nginx(作为Apache所有静态内容的反向代理,如图片/css文件等)
  • MySQL

我已经写了代码,从客户端发送一个事件到PHP,并插入一个通知到数据库中。当接收者刷新页面时,他们当然会看到通知。我只需要node.js来处理实时推送到客户端,但我在如何去设置它的损失。

在这种情况下,我真正需要知道的是:

  1. 如何/何时实例化到客户端的node.js/websocket连接,给定我希望所有的内容仍然通过Apache/PHP服务?
  2. 如何从PHP发送消息到Node.js并指示它推送通知客户端?
  3. 为了支持这一点,我需要对我的设置进行什么样的后端修改?

最终我想简单地能够运行一个PHP函数,并期望node.js/socket。Io/websockets将通知推送到客户端。我只是不知道怎么去那里。

提前感谢任何例子/信息/指南。

在这种情况下我要做的是用Socket.IO设置一个Node.js服务器。这给了你一个跨浏览器的方法来发送接近实时的数据到客户端。

当客户端加载PHP页面时,您将有一个指向Node.js服务器的<script>标记来加载Socket.IO。一旦加载,Socket。IO JavaScript客户端将连接到你的Node.js Socket。IO服务器,等待事件发出。

现在,由于您希望从PHP发送这些事件,因此需要在PHP应用程序和Node.js之间建立一个通信通道。我建议使用Redis pub/sub。基本上,PHP应用程序发布消息,订阅了该消息的Node.js服务器将接收该消息。然后,这些服务器可以立即将消息传递给客户端,以便从PHP获取更多数据。(我想你会发现,虽然它可能只是很容易让你的Node.js服务器只是发送数据放在首位。)

如果你想的话,你可以把Node.js放在Nginx服务器后面,但是你需要最新最好的版本来支持真正的web套接字。

这个问题已经很老了,但是我在尝试实现websockets时发现了它,所以也许这将帮助那些需要一个纯PHP解决方案的人,这个解决方案可以集成到一个现有的项目中,而不需要太多的黑客攻击。

棘轮PHP WebSockets

唯一的要求是PHP的zmq绑定,它被用作将数据从PHP脚本传递到websocket服务器的方法。如果你的PHP实例不是用它构建的,你可以在这里找到它

Github的repo在这里,很多例子让你在这里