我有一个Node.js服务器在HTTPS上提供(相当大的)文件。当使用“正常”HTTPS客户端时,一切都按预期工作。但我的主要用例是将这些文件提供给嵌入式系统(大型文件是固件映像)。
嵌入式系统使用mbedTLS库创建到我的节点服务器的安全SSL/TLS连接,并发送一个HTTPS请求来下载文件。服务器忠实地使用HTTP中的文件作为八进制流进行应答。
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消息中发送的数据量吗?
发布于 2018-01-25 18:11:24
您是否尝试过像这样传递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 这里的官方文档。
https://stackoverflow.com/questions/48448069
复制相似问题