1

我处于研究新技术的位置,所以我听说过 Long polling,node.js。

我需要创建一个使用long polling.

在这个项目的每个页面上,我都需要使用轮询,实际上它通过 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,我们可以在一个连接中管理它。

我正在使用 Codeigniter,对 node.js 来说真的很陌生。

如何使用 codeigniter 实现 node.js,或者您能否建议我更多关于此场景的信息。

4

1 回答 1

3

它不会node在一个连接中处理所有请求。Node 一次可以处理大量的并发连接,而​​ Apache 与 node.js 相比只能处理很少的并发连接

查看websockets http://socket.io/

Websockets 允许客户端和服务器之间的全双工连接。HTTP 协议为每个请求打开一个连接,并在客户端收到响应后结束连接。Websockets 允许我们保持连接打开。

如果您在服务器端使用 nodejs 和 websockets,您可以使用套接字将事件推送到客户端,而不是客户端以特定间隔轮询服务器。

因此,它将使您免于长时间轮询。

在您的情况下:如果您决定使用 nodejs 和 websocket,那么您将需要找到一种方法来触发服务器中的传入电子邮件事件并通知现有套接字该事件。

所以节点也需要轮询POP来检查邮件,有什么区别

想象一下有 1000 个用户使用轮询登录到应用程序。每个用户将每 30 秒轮询一次服务器。所以每秒 2000 次 POP 民意调查。

使用nodejs,第二次POP poll,如果有邮件,通知sockets,客户端会处理事件。

但是您应该真正考虑项目的整体需求。 如何决定何时使用 Node.js?

于 2012-06-24T15:08:32.163 回答