php - 如何在 node.js 和 PHP 之间进行通信?

标签 php node.js socket.io

我有一个现有的 PHP 网站,我希望使用 node.js 添加一个实时通知系统

我已经在下图中概述了我的应用程序的结构:

enter image description here

我假设在生成通知时 PHP 和 Node.js 之间的通信是我可以获得实时通知的唯一方法(除非我在 node.js 中重新编码我的整个网站,这是不可能的)

我如何从 PHP 与 node.js 通信? (两者都存在于同一台服务器上或至少在同一本地局域网上)

我在网上和一些 SO 线程上找到了一些解决方案:

还有其他更好的方法吗?

此外,所有通知都不会发送给所有订阅者。

因此,用户 1 生成的通知只会发送给用户 2、3 和 4(因为我的网络应用程序有一些业务规则) 这个权限系统需要维护。我如何确保所有订阅者都没有收到所有通知?

实现此目标的最有效方法是什么?

最佳答案

我知道这个答案很晚才出现,但几天前我遇到了同样的问题。

我们的解决方案是在中间使用像 RabbitMQ 这样的消息代理。基本上,PHP 作为生产者 在有东西被推送时创建消息,而 Node.js 在另一端作为 消费者 监听队列并在任何时候发布消息有新东西。

与 PHP 和 Node.js 之间的直接通信相比,此方法有几个优点。

  • 首先,它是异步的。因此,用户将执行其操作而无需等待。
  • 如果由于某种原因 Node.js 失败,因为消息将存储在 RabbitMQ 中,一旦您重新启动 Node ,它就会从停止的地方继续。
  • 您的 Php 和 Node.js 松耦合。
  • 它有效。

关于php - 如何在 node.js 和 PHP 之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454126/

相关文章:

php - 如何从数组键 => 值中创建一个没有键的简单数组?

node.js - 返回值,或停止脚本

javascript - NodeJS Express,添加事务 ID

Socket.io 连接 url?

php - 无法注销mysql和php

javascript - 表单自动提交

javascript - 无法使 MailChimp api v2 工作

javascript - NODE - 等待一个 api 调用完成后再触发下一个 api 调用

javascript - 使用node.js + socket.io处理多用户数据

javascript - Socket.io 传递 javascript 对象