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

时间:2014-06-27 14:21:31

标签: 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(因为我的网络应用程序的一些业务规则) 需要维护此权限系统。如何确保所有订阅者都没有收到所有通知?

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

1 个答案:

答案 0 :(得分:2)

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

我们的解决方案是在中间使用像RabbitMQ这样的消息代理。基本上,PHP作为producer在有东西被推送时创建消息,而Node.js在另一侧作为consumer监听队列并在有新内容时发布消息。 / p>

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

  • 首先,它是异步的。因此,用户将执行其操作,并且不必等待。
  • 如果出于某种原因,Node.js失败,因为消息将存储在RabbitMQ中,一旦重新启动节点,它将从它停止的地方继续。
  • 你有Php和Node.js松散耦合。
  • 有效。