可以将Nodejs与Cakephp集成吗?

时间:2014-03-13 14:57:57

标签: node.js cakephp

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

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

或许可以使用Httpsockect使用不同的端口$this->Comment->save($this->request->data);

2 个答案:

答案 0 :(得分:9)

是的,这是可能的。

你有多种解决方法,让我给你我的想法

您可以简单地使用长轮询并且根本不使用Node.js。如果在那里没有太多的流量,这是一个合适的解决方案,否则你将有一个糟糕的时间。

您可以使用websockets并且根本不使用Node.js. Here you have a basic guide about websockets and PHP。虽然,我几乎可以肯定你无法创建" room",即发送特定评论的通知。

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

最后,如果你想完全深入了解Node.js和CakePHP,我建议从watching this talk given on Cakefest 2012开始,它准确描述你的场景。

看完之后,您可能想了解Socket.io。这是一个更复杂的解决方案,但它是我在使用CakePHP和Node.js创建实时应用程序时所使用的。

此处的策略是让用户在访问/ article / view / 123时加入room,让我们说房间名称是articleID,然后socket.io将监听事件发生在这个房间里。

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

答案 1 :(得分:1)

您基本上可以选择Websockets和长轮询。

确定您要使用的技术并开始实施您的用例。考虑到Websockets或多或少是新的。根据您的要求,您可能无法使用Websockets,因为您可能必须支持糟糕的浏览器。 See this page