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

我有一个现有的PHP应用程序,我需要添加实时通知。 为了实现这一点,我已经安装了node.js(打算为所有实时function添加socket.io)

然而。 尽pipe花了最近三个小时的时间研究,并试图让我的头脑如何融合两者,但我发现自己并没有更进一步的了解。

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

  • 阿帕奇
  • 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页面时,你将有一个<script>标签指向你的Node.js服务器来加载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套接字 。