使用codeignitor和node.js进行长轮询
我处于研究新技术的位置,所以我听说了一些关于长轮询,node.js的内容。
我需要创build一个使用long polling
的Web应用程序。
在这个项目的每个页面上,我都需要使用轮询,实际上它会通过POP检查是否有新的电子邮件。
所以我认为我需要做以下事情
- 调用一个ajax请求到服务器
- 服务器收到请求并检查是否有新的电子邮件
- 如果有新的邮件服务器响应其详细信息
- 如果没有新的电子邮件服务器开始睡觉,再次检查,直到一个新的电子邮件到达。
所以这样的事情
$(document).ready(function(){ is_there_new_mail(); function is_there_new_mail() { $.get(url,function(data){ if(data ==true) { //do some actions and call again is_there_new_mail(); } }); } });
在服务器这样的东西
function check_mail() { //processing and checking is there a new mail on inbox return $is_mail = $this->_new_mail()?true:false; } function receiver() { if($check_mail()) { //send to client.. } else { //sleep sometime and call mail function } }
我听说这样做会在服务器上打开很多连接,如果我们使用node.js,我们可以在一个连接中进行pipe理。
我使用的是Codeignitor,对于node.js来说真的很新鲜。
我该如何使用codeignitor实现node.js,或者可以给我一些更多关于这个场景的build议。
提前致谢。
它不是这样的node
将处理一个连接中的所有请求。 节点可以同时处理大量的并发连接,而在另一方面,与node.js相比,Apache在其他方面只能处理很less的并发连接
看看websockets
http://socket.io/ 。
Websockets允许客户端和服务器之间的全双工连接。 HTTP协议为每个请求打开一个连接,并在客户端收到响应后连接结束。 Websockets允许我们保持连接打开。
如果您在服务器端使用nodejs和websockets,则可以使用套接字将事件推送到客户端,而不是以特定间隔轮询服务器。
所以它可以节省你长时间的投票。
在你的情况:如果你决定使用nodejs和websocket,那么你将需要find一种方法来触发服务器中的传入电子邮件事件,并通知现有的套接字关于事件。
所以节点也需要轮询POP来检查邮件,有什么区别
想象一下,1000个用户使用轮询login到应用程序。 每个用户将每隔30秒轮询一次服务器。 所以每秒钟有2000个POP民意调查。
使用nodejs,第二次POP查询,如果有任何邮件,通知套接字,客户端将处理事件。
但是你应该真的考虑你的项目的总体要求。 如何决定何时使用Node.js?