我想实时监控用户在comments
表中输入的数据。
我运行了一个Apache服务器,并假设在端口1337上有一个节点服务器。
每次有人保存新数据时我该怎么做?例如,在comment
中返回表格行的总数并将其显示在view
?
或许可以使用Httpsockect使用不同的端口$this->Comment->save($this->request->data);
?
答案 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