有可能整合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,因为您可能需要支持蹩脚的浏览器。 看到这个页面 。