我有一个现有的 PHP 应用程序,我需要向其中添加实时通知。为了实现这一点,我安装了 node.js(打算为所有实时功能添加 socket.io)
但是。尽管过去三个小时都在研究并试图弄清楚如何将两者结合起来,但我发现自己并没有更接近理解。
我目前正在使用以下内容:
- Apache
- PHP
- Nginx(作为 Apache 的反向代理,用于所有静态内容,例如 图片/css 文件等)
- MySQL
我已经编写了从客户端向 PHP 发送事件并将通知插入数据库的代码。当收件人刷新他们的页面时,他们当然会看到通知。我只需要 node.js 来处理实时推送到客户端,但不知道如何设置它。
鉴于这种情况,我真正需要知道的是:
- node.js/websocket 与客户端的连接如何/何时实例化,给定 我希望所有内容仍然通过 Apache/PHP 提供吗?
- 如何从 PHP 向 Node.js 发送消息并指示它推送 通知给客户?
- 为了支持这一点,我需要对我的设置进行哪些后端修改?
最终,我希望能够简单地运行 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 之间建立一个通信 channel 。我推荐using Redis pub/sub为了这。基本上,您的 PHP 应用程序会发布一条消息,而您的已订阅该消息的 Node.js 服务器将接收该消息。然后,这些服务器可以立即将消息传递给客户端,以从 PHP 获取更多数据。 (我想您会发现,让您的 Node.js 服务器一开始就发送该数据可能同样容易。)
如果你愿意,你可以把 Node.js 放在你的 Nginx 服务器后面,but you need the latest and greatest version for true web socket support .
关于php - 将 Node.js(用于实时通知)添加到现有 PHP 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16472687/