有可能整合Nodejs与CakePHP?

我想实时监控用户在comments表中input的数据。 我运行了一个Apache服务器,并假设在端口1337上有一个节点服务器。

每次有人保存新的数据时,我该如何做,例如,将comment的表格行总数返回给我,并将其显示在view

可能的方法是使$this->Comment->save($this->request->data); 使用不同的端口使用Httpsockect ?

对的,这是可能的。

你有多种方式解决这个问题,让我给你我的想法

您可以简单地使用长轮询,根本不使用Node.js。 如果没有太多的交通,那么这是一个合适的解决scheme,否则你将会有一段糟糕的时间。

你可以使用websockets,根本不使用Node.js。 这里有一个关于websockets和PHP的基本指南 。 虽然,我几乎可以肯定,你将无法创build“房间”,即发送具体评论的通知。

你也可以使用棘轮 。 这是一个更复杂的库来处理websockets,它支持房间。

最后,如果你想充分利用Node.js和CakePHP,我build议开始观看Cakefest 2012上给出的描述,这个描述正好描述了你的场景。

在你看完之后,你可能想学习一些关于Socket.io的知识 。 这是一个更复杂的解决scheme,但这正是我在集成CakePHP和Node.js创build实时应用程序时所使用的。

这里的策略是让用户在访问/ article / view / 123时join一个房间 ,假设房间名称是articleID,那么socket.io将会监听在这个房间发生的事件。

你将有一个CakePHP方法来处理保存。 然后,当用户提交表单时,你不直接调用Cake动作,你有socket.io来分派一个事件,然后在你的事件中把数据传递给服务器(Node.js),nodejs会调用你的cakephp函数保存数据。 当Nodejs从CakePHP收到确认,然后你广播一个事件(使用socket.io),这个事件将让知道连接到该房间的所有用户发表了评论。

您基本上可以selectWebsockets和长轮询。

  • Websockets(带棘轮和Autobahn.js )
  • 使用彗星的长轮询

决定要使用哪种技术并开始实施您的使用案例。 考虑到Websockets或多或less是新的。 根据您的要求,您可能无法使用Websockets,因为您可能需要支持蹩脚的浏览器。 看到这个页面 。