我处于研究新技术的位置,所以我听到了一些关于长轮询的信息,node.js。
我需要创建一个使用long polling
。
在这个项目的每一页上,我都需要使用轮询,实际上它会检查是否有新的电子邮件通过POP。
所以我认为我需要做以下
这样的事情
$(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,或者您可以建议我更多关于这种情况的信息。
答案 0 :(得分:3)
不是node
将处理一个连接中的所有请求。节点可以同时处理大量的并发连接,与node.js相比,其他人手中的Apache只能处理很少的并发连接
查看websockets
http://socket.io/。
Websockets允许客户端和服务器之间的全双工连接。 HTTP协议为每个请求打开一个连接,并在客户端收到响应后连接结束。 Websockets允许我们保持连接打开。
如果在服务器端使用nodejs和websockets,则可以使用套接字将事件推送到客户端,而不是客户端以特定间隔轮询服务器。
因此它可以帮助您避免长时间轮询。
在你的情况下: 如果您决定使用nodejs和websocket,那么您将需要找到一种方法来触发服务器中的传入电子邮件事件,并通知现有套接字有关该事件。
因此节点还需要轮询POP以检查邮件,区别是什么
想象一下,1000名用户使用轮询登录到应用程序。每个用户每30秒轮询一次服务器。所以2000次POP民意调查每秒。
使用nodejs,第二次POP轮询,如果有任何邮件,请通知套接字,客户端将处理该事件。
但您应该考虑项目的总体要求。 How to decide when to use Node.js?