node.js - 不断向客户端发送响应

标签 node.js http express

有没有办法,在最终调用 response 对象上的 end 之前,我可以连续向客户端发送响应?

有一个巨大的文件,我想读取、解析然后将分析结果发送回客户端。是否有可能我读完一行就继续发送回复?

response.send 也会调用 end,所以我无法使用它。

最佳答案

您想使用res.write ,它发送响应正文内容而不终止响应:

This sends a chunk of the response body. This method may be called multiple times to provide successive parts of the body.

请注意,write 不包含在 Express documentation 中。因为它不是 Express 特有的函数,而是继承自 Node 的核心 http.ServerResponse,而 Express 的响应对象则扩展自:

The res object is an enhanced version of Node's own response object and supports all built-in fields and methods.

但是,处理流数据总是有点棘手(请参阅下面关于意外超时的警告的评论),因此重组应用程序以通过 WebSocket 发送流数据可能会更容易。 ,或socket.io与不支持 WebSocket 的浏览器兼容。

关于node.js - 不断向客户端发送响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42907269/

相关文章:

node.js - 在 mongodb 和 nodejs 中为架构违规设置自定义验证消息

http - 当 header 为 { 'Authorization' : 'Bearer ' + token } 时,req.body 为空

django - 是否应该捕获来自 HTTP 参数问题的不可恢复异常?

javascript - 使用浏览器将通过 http 发送的 Base64 编码数据保存为二进制文件

javascript - 当出现异步超时错误时,如何使用 jest 测试 Express 应用程序?

javascript - 处理 ajax PUT 请求

javascript - 在 Node request() 中推送到数组

node.js - 使用 Visual Basic 2015 构建 Electron native 扩展

node.js - nodejs http-proxy 不转发放置请求

javascript - 使用/和/:slug as different route files 表示动态路由