我有一个现有的PHP应用程序,我需要添加实时通知.为了实现这一点,我安装了node.js(打算为所有实时功能添加socket.io)
然而.尽管花了最后三个小时进行研究并试图了解如何整合这两者,但我发现自己没有接近获得理解.
我目前正在使用以下内容:
阿帕奇
PHP
Nginx(作为Apache的反向代理,用于所有静态内容,如图像/ css文件等)
MySQL的
我已经编写了代码,它将一个事件从客户端发送到PHP并将通知插入到数据库中.当收件人刷新他们的页面时,他们当然会看到通知.我只需要node.js来处理推送到客户端的实时时间,但我不知道如何设置它.
鉴于这种情况,我真正需要知道的是:
如果/我希望所有内容仍然通过Apache/PHP提供,那么node.js/websocket连接到客户端的实例/时间是多少?
如何从PHP向Node.js发送消息并指示它将通知推送到客户端?
我需要对我的设置进行哪种后端修改才能支持此操作?
最后,我希望能够运行PHP函数并期望node.js/socket.io/websockets将通知推送到客户端.我根本不知道如何到达那里.
提前感谢任何示例/信息/指南.
我在这种情况下要做的是用Socket.IO建立一个Node.js服务器.这为您提供了一种跨浏览器方法,用于向客户端发送近实时数据.
当客户端加载PHP页面时,您将有一个标记指向您的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插槽.