0

我正在尝试将大型 xml 文件从 express 流式传输到客户端,但在服务器上完成文件处理并调用 res.end() 之前,我还没有找到如何发送。

xml 文件是使用 xmlbuilder-js 构建的。它有一个接收文档块的回调,我试图使用 response.write(chunk) 在其中发送。

res.writeHead(200, {
    'Content-Type': 'text/xml',
    'Transfer-Encoding': 'chunked'
  })

   xmlToReturn = xmlBuilder.begin({
      writer: {
        pretty: true,
      }
    }, function(chunk) { 
      res.write(chunk)
    }).dec('1.0', 'UTF-8', true)
...
res.end()

回调按预期工作,它显示通过的数据块。

我努力了:

  • 将响应中的内容类型更改为,例如,“application/octet-stream”
  • 在调用 res.write() 后使用 res.flush(),或定期执行此操作
  • 尝试其他标题

在所有情况下,如果我能得到要发送的响应,客户端永远不会收到它的开始,直到 res.end() 被调用。我需要做什么才能让 express 在内容流经回调时开始交付内容?

我已经探索过这样的问题和帖子,这表明我的方法是正确的,但我做错了,或者由于其他模块或中间件,流式传输无法快速工作。

4

0 回答 0