我有一个Node.js服务器通过HTTPS提供(相当大)的文件。使用"正常" HTTPS客户端,一切都按预期工作。但我的主要用例是将这些文件提供给嵌入式系统(大文件是固件映像)。
嵌入式系统使用mbedTLS库创建到我的节点服务器的安全SSL / TLS连接,并发送HTTPS请求以下载文件。服务器忠实地回复HTTP-body中的文件作为八位字节流。
async function createServer({ port, keys, cert }) {
const app = express()
app.use('/', express.static('images'))
https.createServer({ key: keys.privateKey, cert }, app).listen(port, '0.0.0.0')
}
问题:由于嵌入式系统的内存限制,我的客户端的最大消息缓冲区大小为4096字节。但是服务器以更大的块发送数据(例如,每个消息16408字节)。给定小缓冲区并且拒绝解密数据时,mbedTLS无法处理那些大型消息。
我可以以某种方式告诉Node限制它可以在一条TLS消息中发送的数据量吗?
答案 0 :(得分:2)
您是否尝试过这样的highWaterMark
选项:
function createServer({ port, keys, cert }) {
const app = express()
app.use('/', express.static('images', { highWaterMark: 1024 * 4 }))
https.createServer({ key: keys.privateKey, cert }, app).listen(port, '0.0.0.0')
}
传递给express.static
的选项将传递给内部创建的基础fs.createReadStream
。请查看fs.createReadStream
here的官方文档。