【发布时间】:2020-10-03 10:43:33
【问题描述】:
我正在尝试将 10 GB 数据从节点客户端发送到节点 http 服务器。它工作正常,直到我达到大约 5 GB。协议是http。
它工作正常,直到我达到大约 5 GB。我在服务器端遇到的错误是 [ERR_STREAM_PREMATURE_CLOSE] 而在客户端 RequestError: read ECONNRESET。
示例服务器:
const http = require('http')
const fs = require('fs')
const util = require('util')
const stream = require('stream')
const pipeline = util.promisify(stream.pipeline)
const host = 'localhost'
const port = 4000
const server = http.createServer(async (req, res) => {
try {
const writeStream = fs.createWriteStream('file', { encoding: 'binary' })
await pipeline(req, writeStream)
} catch (e) {
console.log(e)
}
})
server.listen(port, host, () => {
console.log(`Server is running on http://${host}:${port}`)
})
示例客户端
const got = require('got')
async function upload () {
await pipeline(fs.createReadStream(filename), got.stream.post('http://localhost:4000/upload'))
}
我尝试过使用不同的服务器(原始 http 和 express)和客户端(原始节点、请求、节点获取)。我也尝试过与 busboy 的 multipart。同样的问题。
我正在 Mac 上尝试这个正在运行的节点 v14.4.0。
【问题讨论】: