在PHP应用程序中使用node.js和socket.io

我有工作的PHP应用程序。 它允许用户创build私人项目并邀请其他人参与。 现在,使用node.js和socket.io,我想做实时的评论,发布等。

什么是最好的build筑?

我现在看到两个解决scheme。

首先是:

  • 用户将AJAX查询发送到PHP后端: http : //example.com/comment_add.php ? text= …
  • comment_add.php向数据库添加评论,并通过AMPQ(或更好的东西?)通知node.js服务器广播评论的渠道的用户。

第二个是:

  • 用户将AJAX查询发送到node.js服务器: http : //example.com :3000/comment_add
  • Node.js向PHP后端发送请求(但如何?授权?),接收响应,然后广播给频道的订户。

什么是最好的方法? 还有其他的方法吗? 如何正确实施?

当你决定使用node.js + socket.io来创build一个实时的Web应用程序,你不需要再考虑PHP了,而忘记了Ajax … Socket.io将是客户端和服务器之间的通信。

但是,是的,您可以使用Ajax和PHP快速构build网站,以及其他一些不需要实时的function

第二种方法是最好的方法。 您可以使用http从node.js与PHP进行通信。 授权可以在node.js中完成,但是每次将授权凭证传递给PHP

最后我的工作解决scheme是#1。

当用户build立到node.js / socket.io的连接时,他只是用他的PHP会话ID发送'subscribe'消息给node.js。 Node.js使用POST请求检查授权给PHP后端,如果一切正常,允许用户build立连接。

前端将所有请求发送到PHP,就像在node.js之前一样。 PHP修改一些对象,检查谁可以访问修改的对象,并通过AMQP或redis pub / sub等发送消息到node.js:

{ id_object: 125342, users: [5, 23, 9882] } 

node.js然后检查谁列出的用户有活动的套接字,并为每个用户发送GET请求到PHP:

 { userId: 5, id_object: 125342 } 

接收此请求的特殊PHP控制器运行查询以获得具有给定用户标识的权限的对象,然后将消息发送到node.js并返回结果。 Node.js然后通过套接字向用户的前端发送答案。

一年前我在大学开始我的最后一年项目时,也面临同样的问题。 我意识到我的项目更适合将Node用作独立应用程序。 节点非常擅长处理I / O,这可以是从HTTP请求到数据库查询的任何事情。 在Node之后的基于PHP的Web服务器中添加将会增加不必要的复杂性。 如果您的应用程序需要执行CPU密集型任务,那么您可以相当容易地生成执行所需操作的“子”节点,并将结果返回给父节点。

然而,在你提到的两种方法中,我会select#2。 Node.js可以通过很多方式与你的PHP服务器通信,你可以看看在你的PHP服务器和Node之间创build一个unix套接字连接。 如果这是不可用的,您可以简单地使用HTTP在Node和PHP后端之间进行通信。 🙂

看看这里,这里是一个解决scheme,与您自己的问题非常相似: http : //forum.kohanaframework.org/discussion/comment/57607