I’m trying to flush a socket before sending the next chunk of the data:
var net = require('net');
net.createServer(function(socket) {
socket.on('data', function(data) {
console.log(data.toString());
});
}).listen(54358, '127.0.0.1');
var socket = net.createConnection(54358, '127.0.0.1');
socket.setNoDelay(true);
socket.write('mentos');
socket.write('cola');
This, however, doesn’t work despite the setNoDelay option, e.g. prints “mentoscola” instead of “mentos\ncola”. How do I fix this?
Looking over the
WriteableStreamapi, and the associated example it seems that you should set your breaks or delimiters yourself.Because your socket is a stream, data will be written/read without your direct control, and
#writewon’t change your data or assume you’re meaning to break between writes, since you could be streaming a large piece of information over the socket and might want to set other delimiters.I’m definitely no expert in this area, but that seems like the logical answer to me.
Edit: This is a duplicate of Nodejs streaming, and the conclusion there was the same as the answer I specified: working with streams isn’t line-by-line, set your own delimiters.