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

标签 php apache node.js

我有一个现有的 PHP 应用程序,我需要向其中添加实时通知。为了实现这一点,我安装了 node.js(打算为所有实时功能添加 socket.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 页面时,您将有一个 <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/

相关文章:

php - 在服务器上配置 php/MVC

php - 如何保护用户编辑 Paypal 按钮?

Apache tomcat 停止

node.js - 安装node.js时编译错误

node.js - 如何在 Sequelize 中使用外键和常规键创建复合唯一约束?

php - 捕获特定表单的按钮点击事件?

php - 无法申请进程槽

java - 无法连接到 FTPS 服务器

php - 如何让其他电脑使用我的电脑作为服务器来访问我的php页面?

java - 从 Java 发送数据并在 Node.js 应用程序中接收