【问题标题】:Long polling with codeigniter and node.js使用 codeigniter 和 node.js 进行长轮询
【发布时间】:2012-06-26 00:56:33
【问题描述】:

我处于研究新技术的位置,所以听说了一些关于 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,或者您能否建议我更多关于此场景的信息。

【问题讨论】:

  • 随着您对解决方案的解释,它将为需要长轮询的每个用户打开一个新连接。真的没有更好的选择,你不能有一个单一的连接来处理所有传入的客户端连接。
  • 我的理解是每个请求都会在 apache 上创建一个新进程......我该如何摆脱这个? [对不起,我只是在研究这个,信息可能不正确]

标签: php jquery codeigniter node.js long-polling


【解决方案1】:

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

查看websocketshttp://socket.io/

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

如果你在服务器端使用nodejs和websockets,你可以使用sockets将事件推送到客户端,而不是客户端每隔一定时间轮询服务器。

所以它会让你免于长时间轮询。

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

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

假设有 1000 个用户使用轮询登录到应用程序。每个用户将每 30 秒轮询一次服务器。所以每秒 2000 次 POP 轮询。

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

但您应该真正考虑项目的整体需求。 How to decide when to use Node.js?

【讨论】:

  • 感谢您的信息...我会研究 socket.io .. 有没有 codeignitor 的例子?
  • +1 bronco,我现在有点陶醉,但是如何将您的值存储在 json 文件中,然后检查该文件的时间戳,如果时间戳不同则发送新请求??
猜你喜欢
  • 2013-10-01
  • 2011-10-20
  • 2016-08-14
  • 2017-05-15
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
相关资源
最近更新 更多