php - 使用 codeigniter 和 node.js 进行长轮询

标签 php jquery codeigniter node.js long-polling

我正在研究新技术,所以我听说了一些关于长轮询、node.js的事情。

我需要创建一个使用长轮询的网络应用程序。

在这个项目的每个页面上我都需要使用轮询,实际上它检查是否有通过 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,或者您能否向我建议有关此场景的更多信息。

最佳答案

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

查看websockets http://socket.io/ .

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

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

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

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

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

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

使用nodejs,2次POP轮询秒,如果有邮件,通知套接字,客户端将处理该事件。

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

关于php - 使用 codeigniter 和 node.js 进行长轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177997/

相关文章:

javascript - 如何在自定义页面(而不是商店/产品页面)上添加“添加到购物车”按钮 Woocommerce

javascript - 将 JSTree 节点拖到外部 div 中

javascript - 无法使用 Fetch API 获取 JSON,但可以使用 JQuery

javascript - jQuery 显示和隐藏事件问题

variables - 代码点火器 View 记住以前的变量!

php - 使用 codeigniter 更新记录时出错

php - CodeIgniter HMVC 如何定义子模块用户(用户登录)

javascript - 如何将模态图像放入帖子中从 Wordpress 内容插入的图像?

php - 使用 postgresql 数据库的简单测试 php

javascript - 显示用户 ID 的个人资料