Node.js:如何刷新套接字?
我想在发送下一个数据块之前刷新套接字:
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');
但是,尽pipe有setNoDelay
选项,但是,这不起作用,例如打印“mentoscola”而不是“mentos \ ncola”。 我该如何解决?
查看WriteableStream
api和相关示例,似乎应该自己设置您的rest或分隔符。
exports.puts = function (d) { process.stdout.write(d + '\n'); };
因为你的套接字是一个stream,数据将被写/读,而不用你的直接控制, #write
将不会改变你的数据,或者假设你#write
在写入之间断开,因为你可以通过套接字,并可能要设置其他分隔符。
我绝对不是这个领域的专家,但这似乎是对我来说合乎逻辑的答案。
编辑 :这是一个Nodejsstream的重复,并得出了与我指定的答案相同的结论:使用stream是不是一行一行,设置自己的分隔符。
也许所有写在同一个tick中的数据都是以批处理方式发送的。
也许在接收端,节点将在发送数据事件之前合并单独的数据段。