update output streaming

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

View File

@@ -751,20 +751,21 @@ 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 can_write = true;
while (socket.bytesWritten != data.byteLength && can_write) {
var buffer_size = ((data.byteLength - chunk_offset) >= chunk_size) ? chunk_size : (data.byteLength - chunk_offset); var buffer_size = ((data.byteLength - chunk_offset) >= chunk_size) ? chunk_size : (data.byteLength - chunk_offset);
var chunk = new Buffer.alloc(buffer_size); var chunk = new Buffer.alloc(buffer_size);
data.copy(chunk, 0, chunk_offset, (chunk_offset + buffer_size)); data.copy(chunk, 0, chunk_offset, (chunk_offset + buffer_size));
if (!socket.write(chunk)) { can_write = socket.write(chunk);
if (!can_write) {
socket.once('drain', function () { socket.once('drain', function () {
sendToSocket(socket, data, socket.bytesWritten); sendToSocket(socket, data, socket.bytesWritten);
}); });
} else { break;
if (socket.bytesWritten == data.byteLength) socket.end();
else setTimeout(function () {
sendToSocket(socket, data, socket.bytesWritten);
}, 10);
} }
} }
if (socket.bytesWritten == data.byteLength) socket.end();
}
function concatArrayBuffer(buffer1, buffer2) { function concatArrayBuffer(buffer1, buffer2) {
var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength); var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);