如何在 NodeJS 中刷新任意大小的块

2023-12-01

在 Node Web 服务器中,我想在特定点刷新 HTML 内容,如下所示:

  • 第一个块:<html><head> ... </head>
  • 第二块:<body> ... </body>
  • 第三块:</html>

e.g.:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});

  res.write('<html><head> ... </head>');                                           

  setTimeout(function() {                                                          
    res.write('<body> ... </body>');                                               

    setTimeout(function() {                                                        
      res.end('</html>');                                                          
    }, 2000);                                                                      

  }, 2000);

}).listen(8000);

上面的代码有响应<html><head> ... </head><body> ... </body></html>在单个块中大约 4 秒后,但是我注意到块应该 >= 4096 字节才能立即刷新:

var http = require('http');

http.createServer(function (req, res) {                                            
  res.writeHead(200, {'Content-Type': 'text/plain'});                              

  res.write(Array(4097).join('*'));

  setTimeout(function() {                                                          
    res.write(Array(4097).join('#'));

    setTimeout(function() {                                                        
      res.end('done!');                                                            
    }, 2000);

  }, 2000);

}).listen(8000);

上面代码的响应也需要大约 4 秒,但块会立即刷新。我可以填充小块来填充至少 4096 字节,只是想知道是否还有另一种“非 hacky”方法。

在 PHP 中,这可以通过以下方式实现flush()/ob_flush()并禁用output_buffering

FWIW,我正在构建一个 Web 服务器工具来试验 HTML 块输出的几种配置,并在它们之间给定延迟,以便分析现代浏览器如何处理它并选择最佳配置。

Thanks


这是半重复的这个问题.

答案是,它已经完成了您想要的操作,只是浏览器在收到足够的数据来解析它之前不会解析和显示任何内容。发送 4097 的块会推动浏览器解析部分文档,但不会推动 Node 以不同的方式发送块。

您可以使用以下方法对此进行测试curl如果你把它置于非缓冲模式。

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

如何在 NodeJS 中刷新任意大小的块 的相关文章

  • 运行 pm2 记录错误 SyntaxError: Unexpected token

    我想查看我的项目的日志 Steps 我克隆了一个套接字应用程序 然后我跑npm install pm2 g安装pm2 I run pm2 start 有用 它显示我的套接字应用程序的表格 但如果我跑pm2 logs查看日志 存在这样的错误
  • 如何使用node.js获取屏幕分辨率

    我需要使用 node js 获取屏幕分辨率 但以下代码不起作用 var w screen width var h screen height 这也行不通 var w window screen width var h window scre
  • 如何增加asp classic的请求接受限制

    我从java小程序向asp classic发送post请求 我在此请求中发送非常大的数据 即 csv 数据 当此请求中的字符数增加并超过 138000 时 asp 不接受该请求 java 小程序给出 500 错误 所以有人可以告诉我如何才能
  • 如何使用 Sails.js 和 Waterline 更新 MongoDB 子文档中的特定键?

    当尝试使用 Sails js 和 Waterline ORM 更新 MongoDB 子文档中的单个键时 我遇到了问题 这就是我的person js模型看起来像 module exports attributes name type stri
  • 如何在 Mongoose 中执行查找查询?

    我在 mongodb 中有一组电子书数据 例如 id ObjectId 58b56fe19585b10cd42981d8 cover path D Ebooks uploads ebooks cover 1488285665748 img1
  • 如何编写自己的CasperJS模块?

    例如 我有一个经常需要执行的步骤 例如在某些测试之前用户登录 如何为 CasperJS 编写可重用的代码块 他们的扩展 CasperJS 的文档只为一个文件编写 Thanks 这是一个简单的方法 如果不熟悉 CoffeeScript 请在
  • 在 iOS 中,http 204 响应返回空白页面,有办法阻止这种情况吗?

    以前可能有人问过这个问题 但我似乎找不到解决方案 所以如果是这种情况 我深表歉意 我正在开发一个使用express的简单节点应用程序 其中一个帖子路由返回 http 204 并发送它 下面是我的代码 router post id funct
  • Node.js 工作线程中的 I/O 性能

    下面是一个工作线程示例 在本地计算机上同步 I O 大约需要 600 毫秒 const fs require fs const isMainThread Worker parentPort workerData require worker
  • CoreMongooseArray 到普通数组

    我正在从一个架构中选出 2 个元素 并希望在另一个架构中进行更新 为此 我使用切片方法将数组中的前 2 个元素列入候选名单 但我越来越 CoreMongooseArray 元素1 元素2 而不是 元素1 元素2 如何删除 CoreMongo
  • 找不到模块:无法解析 @google-cloud/storage 上的“fs”

    得到Module not found Can t resolve fs 尝试从 GCP Storage 列出存储桶时出错 import Storage from google cloud storage const googleCloud
  • 关于 Node.js Promise then 和 return?

    我对承诺感到困惑 I use 那么就答应没有返回像这样 new Promise resolve reject gt resolve 1 then v1 gt console log v1 new Promise resolve reject
  • 尝试在 ElasticSearch 中查询和聚合,但聚合不起作用 - elasticsearch.js 客户端

    我尝试查询我的数据集有两个目的 匹配一个术语 可转售 true 按价格对结果进行排序 最低到最高 数据集 文档是 data resellable true startingPrice 0 id 4emEe r x5DRCc5 buyNowP
  • 使用 Node.JS,如何将 JSON 文件读入(服务器)内存?

    背景 我正在使用 Node js 进行一些实验 并且希望从文本文件或 js 文件 哪个更好 读取 JSON 对象到内存中 以便我可以从代码快速访问该对象 我意识到有像 Mongo Alfred 等这样的东西 但这不是我现在需要的 Quest
  • Node.js“需要”其他文件而不需要命名空间

    我正在将代码库从 100 浏览器端切换为浏览器端和服务器端的混合 我发现的问题是 要让我的代码使用 node js 运行 我必须使用模块 为了将我的代码变成模块 需要对几乎所有代码进行巨大的重构 原因是在浏览器上 许多功能是跨文件使用的 而
  • 在 WSL Ubuntu 20.04 上安装 npm 后,我收到消息“/usr/bin/env: ‘bash\r’: No such file or directory”

    运行时我看到以下消息npm install or npm来自终端的命令 执行中node按预期工作 gt npm install usr bin env bash r No such file or directory 2023 年 7 月更
  • ASP.NET Core URL 重写

    我正在尝试将我的网站从 www 重定向到非 www 规则以及 http 到 https https example com https example com 在中间件中 我曾经在 web config 中进行这些重定向更改 例如
  • lessc:未找到命令

    我使用的是 OS X 8 并且是 Node LESS 的新手 我以为我之前安装了 lessc 当我转到 usr local bin 时 我看到了 lessc 但对于我的生活来说 我无法运行它 每当我运行它时 我都会看到 bash lessc
  • Socket.io 与服务器离线连接

    如何检测服务器是否离线或由于其他原因无法连接 我的代码看起来像这样 this socket io connect connectionInfo reconnect false 它不会抛出任何错误 因此 try catch 子句不起作用 Us
  • ASP.NET 中 HTTP 缓存相关标头的有效含义

    我正在 ASP NET 2 0 中开发一个 Web 应用程序 其中涉及通过资源处理程序 ashx 提供图像 我刚刚实现了处理缓存标头和条件 GET 请求 这样我就不必为每个请求提供所有图像 但我不确定我是否完全理解浏览器缓存发生了什么 图像
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它

随机推荐

  • 使用 odeint 函数定义

    很菜鸟的问题 所以请耐心听我说 我按照这里给出的例子 gt http www codeproject com Articles 268589 odeint v2 Solving ordinary Differential equations
  • gensim - Doc2Vec:在英语维基百科上训练时出现 MemoryError

    我从英语维基百科转储中提取了 145 185 965 个句子 14GB 我想根据这些句子训练 Doc2Vec 模型 不幸的是我 只有 32GB RAM 并且得到了内存错误当尝试训练时 即使我将 min count 设置为 50 gensim
  • 未定义的类“FirebaseUser”

    我是颤振新手 我有一个问题Firebase 身份验证 Google 身份验证 The Firebase用户没有定义 代码 FirebaseAuth auth FirebaseAuth instance GoogleSignIn google
  • 字符串是不可变的,那么replace()是如何工作的呢?

    我试图用最后一个字母 字符替换字符串的第一个字母 字符 用第一个字母 字符替换最后一个字母 字符 例如 abcd gt dbca Java 中的字符串是不可变的 那么我们如何解释这个程序的行为呢 请看一下最终输出 str1 没有字符 a 但
  • R 中的分层随机抽样

    我正在努力使用具有 3078 个观察值的分层随机抽样来创建大小为 100 的分层样本 分层随机抽样必须满足的条件是 FARMS92600 为 分层 并采用比例分配 当我遵循分层函数时 我不明白如何继续 https gist github c
  • 如何在 SwiftUI 中检测点击手势位置?

    适用于 SwiftUI 而不是普通 UIKit 非常简单的示例代码 例如在灰色背景上显示红色框 struct ContentView View State var points CGPoint CGPoint x 0 y 0 CGPoint
  • 如何应用将向量返回到每个 numpy 数组元素的函数(并获取更高维度的数组)

    我们直接用代码写吧 注意 我将映射器 原始示例使用 x gt x 2 x 3 x 仅作为示例 编辑为通用黑盒函数 这导致了麻烦 import numpy as np def blackbox fn x I can t be changed
  • 将 Symfony2 缓存存储在其他地方?

    有没有办法将 symfony 2 缓存 应用程序 缓存 存储在文件系统以外的其他地方 Memcache S3 还是其他什么 有内置选项吗 您只能通过重载 AppKernel 类中的 getCacheDir 方法将其移出项目目录 将其移至 M
  • 为 UIWebView 请求设置 Cookie

    我想嵌入一个UIWebView进入我的 MonoTouch 应用程序中尚未本地实现的区域 为了对网站进行身份验证 我想设置一个包含当前会话密钥的 cookie 我尝试创建一个NSDictionary与 Cookie 的属性 然后创建一个新的
  • 是否可以修补 File::Find::Rule 以自动处理文件名字符编码/解码?

    假设我有一个名为 UNICODE 0xE6 UTF8 0xC3 0xA6 在当前目录中 然后 我想用File Find Rule找到它 use feature qw say use open qw std utf8 use strict u
  • CMake:在静态库中包含库依赖项

    我正在构建一个staticCMake 中的库 它依赖于许多其他静态库 我希望它们全部包含在输出 lib a 文件中 这样我就可以向客户发送一个大的 lib 文件 在 Visual Studio 2010 中有一个选项 链接库依赖关系 它正是
  • 根据滚动逐渐改变背景颜色

    我有一个滚动视图 当它向下滚动时 背景颜色会改变 我知道我可以使用 UIView 动画来实现此自动化 但我想根据滚动的百分比设置颜色 我想设置 0 和 100 颜色 并且当前颜色将被计算并设置为scrollViewDidScroll 0 5
  • Python中访问类变量的性能

    我想知道访问类变量 字典 时性能是否有任何差异在同一个类的方法内 using self class variable dict add some key some value and ClassName class variable dic
  • 如何将服务器响应日期转换为本地时区?

    在 api 调用响应中 我得到了不同时区的日期 我想将其转换为用户的本地时区 并且用户可以从 ios 时区列表中选择任何时区 这都是本地的 我们永远不会将选定的用户时区发送到服务器 在进行任何 api 调用时 假设我正在创建一个事件 并在选
  • 在 Firebase/Swift 上为两个匹配的用户创建聊天室的首选方式是什么? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在努力在 Firebase 100 上创建 Tinder 克隆 从身份验证到实时聊天 我已经成功地在消息视图控制器的表格视图上向用户展示了他们共同感兴趣的匹配项 现在我的问题
  • 将 dotenv 路径与 JEST 一起使用

    我正在尝试使用不同的 env 文件进行 Jest 测试 但到目前为止我无法使其工作 包 json name task manager version 1 0 0 description main index js module main j
  • 在哪里可以找到经过训练的模型(例如 googleNet 的输出)与真实类别标签之间的标签映射?

    大家好 我是咖啡新手 目前 我尝试使用从 model Zoo 下载的经过训练的 GoogleNet 对一些图像进行分类 然而 网络的输出似乎是一个向量而不是真正的标签 如狗 猫 在哪里可以找到经过训练的模型 例如 googleNet 的输出
  • WINDOWS RESTful 服务上的 cURL POST 命令行

    我的问题 使用命令行工具来卷曲我的本地主机服务器 同时发送一些数据和我的 POST 请求不起作用 似乎是什么导致了错误 想象一下这样的事情 curl i X POST H Content Type application json d da
  • 当视图在弹出后出现时,ios 8 tableview会自动重新加载

    我有一个表视图 单击第七行 我推送另一个视图 然后当我回来使用pop时 tableview会在ios8中自动重新加载 ios 7 不会发生这种情况 问题是 0 1 2 3 单元格的 cellForRow 和 HeightForRow 未调用
  • 如何在 NodeJS 中刷新任意大小的块

    在 Node Web 服务器中 我想在特定点刷新 HTML 内容 如下所示 第一个块 第二块 第三块 e g var http require http http createServer function req res res writ