我有一个现有的 PHP 网站,我希望使用 node.js 添加一个实时通知系统
我已经在下图中概述了我的应用程序的结构:
我假设在生成通知时 PHP 和 Node.js 之间的通信是我可以获得实时通知的唯一方法(除非我在 node.js 中重新编码我的整个网站,这是不可能的)
我如何从 PHP 与 node.js 通信? (两者都存在于同一台服务器上或至少在同一本地局域网上)
我在网上和一些 SO 线程上找到了一些解决方案:
- 使用 redis 发布订阅:http://xmeng.wordpress.com/2011/11/14/pubsub-in-redis-using-php/
- 使用 DNode:http://bergie.iki.fi/blog/dnode-make_php_and_node-js_talk_to_each_other/
还有其他更好的方法吗?
此外,所有通知都不会发送给所有订阅者。
因此,用户 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/