使用codeignitor和node.js进行长轮询

我处于研究新技术的位置,所以我听说了一些关于长轮询,node.js的内容。

我需要创build一个使用long polling的Web应用程序。

在这个项目的每个页面上,我都需要使用轮询,实际上它会通过POP检查是否有新的电子邮件。

所以我认为我需要做以下事情

  1. 调用一个ajax请求到服务器
  2. 服务器收到请求并检查是否有新的电子邮件
  3. 如果有新的邮件服务器响应其详细信息
  4. 如果没有新的电子邮件服务器开始睡觉,再次检查,直到一个新的电子邮件到达。

所以这样的事情

 $(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议。

提前致谢。

Solutions Collecting From Web of "使用codeignitor和node.js进行长轮询"

它不是这样的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?