update output streaming

This commit is contained in:
zefie
2021-08-11 20:17:57 -04:00
parent 88ff940bec
commit 853218713a

View File

@@ -751,19 +751,20 @@ async function sendToSocket(socket, data, chunk_offset = 0) {
socket.setNoDelay(true); socket.setNoDelay(true);
// buffer size = lesser of minisrv_config.config.chunk_size or size remaining // buffer size = lesser of minisrv_config.config.chunk_size or size remaining
var chunk_size = 16384; var chunk_size = 16384;
var buffer_size = ((data.byteLength - chunk_offset) >= chunk_size) ? chunk_size : (data.byteLength - chunk_offset); var can_write = true;
var chunk = new Buffer.alloc(buffer_size); while (socket.bytesWritten != data.byteLength && can_write) {
data.copy(chunk, 0, chunk_offset, (chunk_offset + buffer_size)); var buffer_size = ((data.byteLength - chunk_offset) >= chunk_size) ? chunk_size : (data.byteLength - chunk_offset);
if (!socket.write(chunk)) { var chunk = new Buffer.alloc(buffer_size);
socket.once('drain', function () { data.copy(chunk, 0, chunk_offset, (chunk_offset + buffer_size));
sendToSocket(socket, data, socket.bytesWritten); can_write = socket.write(chunk);
}); if (!can_write) {
} else { socket.once('drain', function () {
if (socket.bytesWritten == data.byteLength) socket.end(); sendToSocket(socket, data, socket.bytesWritten);
else setTimeout(function () { });
sendToSocket(socket, data, socket.bytesWritten); break;
}, 10); }
} }
if (socket.bytesWritten == data.byteLength) socket.end();
} }
function concatArrayBuffer(buffer1, buffer2) { function concatArrayBuffer(buffer1, buffer2) {