Node JS,延迟响应

2024-06-26

var http = require('http');
var s = http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write('Hello\n');
      setInterval(function() {
          res.end(' World\n');
      },2000);
      console.log("Hello");
});
s.listen(8080);

启动上述服务器后,我运行,

curl http://127.0.0.1:8080 

我得到了所需的延迟。输出:

Hello <2 seconds> World

但在浏览器中,整个内容会在 2 秒后加载。

Hell World <together after 2s>

我究竟做错了什么 ?


以下代码段与客户端打开响应流并将其流式传输到客户端。因此,在 curl 中,您将首先收到“Hello”,并在 2 秒后收到“World”(因为您设置了 2000 毫秒的计时器)。

      res.write('Hello\n');
      setTimeout(function() {
          res.end(' World\n');
      },2000);

但浏览器只有在收到完整的响应流后才会呈现它。 这就是为什么您会在 2 秒后收到响应。

这完全是浏览器的行为。在收到整个响应之前,它不会使用响应流。一旦流关闭,整个响应就可以使用了。然而,在 PHP 中,有一种方法可以在需要时刷新响应流。

但是,如果您经常寻找流数据,这并不是最好的方法。我宁愿建议你使用彗星技术 http://en.wikipedia.org/wiki/Comet_%28programming%29 or 网络套接字 http://socket.io/.

我希望这就是您正在寻找的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node JS,延迟响应 的相关文章

随机推荐

  • 如何防止 gson 将整数转换为双精度数

    我的 json 中有整数 但我不希望 gson 将它们转换为双精度数 以下不起作用 Test public void keepsIntsAsIs String json id 1 quantity 2 name apple id 3 qua
  • 在 R/ggplot2 中将字符串转换为函数参数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在开发一个闪亮的应用程序 用户可以选择可以使用 ggplot2 绘制哪些变量 但是我完全不确定将字符串 即要绘制的变量的名称 转换为合适的函数参数的最佳方法 考虑以下非常人为的 有效的示例 df lt dat
  • 是否有 .NET API 可以返回给定路径的等效扩展路径字符串?

    在 NTFS 中 我可以在路径前加上前缀 字符序列 表示它是超过 260 个字符限制的路径 因此 文件系统将正确解释路径并避免引发PathTooLongException see http msdn microsoft com en us
  • 如何使用 C 中的 Banker's Rounding 将 double 舍入为 int

    我想编写一个函数 使用银行家的舍入方法将双精度数舍入为整数 将一半舍入为偶数 http en wikipedia org wiki Rounding Round half to even http en wikipedia org wiki
  • AsyncTask加载图像RecyclerView

    我正在尝试创建一个与该应用程序类似的应用程序 一个在回收视图中包含一些图像和描述 卡片视图 的应用程序 https lh5 ggpht com At pHbZqdzlgmAqY0jbiztDYIAts1wOYWGTOHibmFHuq8CFA
  • 如何使用 DirectoryStream.Filter 过滤隐藏文件

    我正在尝试使用 NIO 类过滤隐藏文件 当我在 Windows 10 上运行随附的代码时 我得到以下输出 Files c Documents and Settings c PerfLogs c Program Files c Program
  • OpenGL ES 2.0 只绘制一次对象

    首先我要说的是 很抱歉今天问了这么多问题 所以 我有一个圈子的课程 我有一个包含 3 个圆形实例的数组列表 每个实例都有不同的 x 坐标来绘制 不管出于什么原因 OpenGL ES 2 0 只绘制其中之一 尽管我调用所有这些来绘制 我检查了
  • 是否可以检测Android应用程序卸载?

    我的应用程序使用 Google 的 C2DM 推送通知 来通知用户朋友的新活动 一旦他们安装了应用程序 我就会向 C2DM 服务器注册设备并存储用户的电话号码 所以我知道用户正在使用我的应用程序 我可以向他 她发送推送通知 但是 如果用户卸
  • PHP:将“’”字符从 ISO-8859-1 转换为 UTF-8 时出现问题

    我在使用 PHP 将 ISO 8859 1 数据库内容转换为 UTF 8 时遇到一些问题 我正在运行以下代码来测试 Connect to a latin1 charset database and retrieve Georgia O Ke
  • 如何在聚合框架中按位置修改数组中的值

    假设有一个简单的文档 array a b c d 如何修改second值在聚合 With update这很简单 db collection updateOne set array 1 B gives array a B c d 在聚合框架中
  • Apache ReWrite 规则是否排除单个文件或文件类型?

    您能帮助我制定一条 Apache 规则来排除特定文件名或文件类型吗 这是我目前的规则 RewriteRule blog L RewriteRule crossdomain xml L Based on first response Rewr
  • AT命令用于接收自动短信通知

    我现在有 2 个 gprs gsm 调制解调器 其中一个是华为 另一个是 prolink 调制解调器 我通过 AT 命令发送或接收短信没有问题 但是 我尝试使用此命令 AT CNMI 接收自动通知 但无法使其正常工作 但当我尝试此命令时 调
  • 使用 Bash 显示进度指示器(旋转器)[重复]

    这个问题在这里已经有答案了 使用仅 bash 的脚本 如何提供 bash 进度指示器 例如 当我从 bash 运行命令时 当该命令正在执行时 让用户知道某些事情仍在发生 在这个使用 SCP 的示例中 我演示了如何获取进程 ID pid 然后
  • 无法在单 SPA 应用程序中启动微前端应用程序

    我在尝试在 Single SPA 应用程序中启动子应用程序时遇到错误 基本上 我正在尝试开发一种 util 应用程序 Single SPA 中的子应用程序 其中包含 Sockjs Stomp client 等 我删除了节点模块和 packa
  • 导入父目录进行简单测试

    我从上到下搜索了这个网站 但还没有找到一种方法来真正实现我在 Python3x 中想要的东西 这是一个简单的玩具应用程序 所以我想我可以在断言中编写一些简单的测试用例 然后就到此为止了 它确实会生成报告等 因此我想确保我的代码在更改时不会做
  • sed:用下划线替换引号内的空格

    我有输入 例如 来自ifconfig run0 scan在 OpenBSD 上 它有一些用空格分隔的字段 但某些字段本身包含空格 幸运的是 包含空格的此类字段总是用引号引起来 我需要区分引号内的空格和分隔符空格 这个想法是用下划线替换引号内
  • 如何将 OpenGL 数学 (GLM) 添加到 Xcode 4?

    我不知道如何将框架添加到我的项目中 我尝试像任何其他框架一样添加它 方法是单击 链接二进制文件与库 下的加号按钮 然后单击 其他 然后选择 GLM 文件夹 但是当我去包含它时 自动完成功能可以工作 但无法构建 因为它说找不到该文件 图书馆网
  • 如何通过 Javascript 获取 Bootstrap 版本?

    有没有办法通过调用函数来获取Bootstrap版本 我做了一些研究 但找不到任何方法 版本信息包含在开头的注释中 如下所示 引导程序 v3 3 7 http getbootstrap com http getbootstrap com 版权
  • Windows 终端设置位置在哪里?

    我编辑了设置文件 肯定有拼写错误 现在应用程序在启动时崩溃 在线文档说设置位于 env LocalAppData Packages Microsoft WindowsTerminal 8wekyb3d8bbwe LocalState set
  • Node JS,延迟响应

    var http require http var s http createServer function req res res writeHead 200 Content Type text plain res write Hello