我正在尝试在发送下一个数据块之前刷新套接字:
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');
但是,尽管有setNoDelay
选项,但这不起作用,例如打印“mentoscola”而不是“mentos \ ncola”。我该如何解决这个问题?
答案 0 :(得分:6)
查看WriteableStream
api以及相关示例,您似乎应该自己设置中断或分隔符。
exports.puts = function (d) {
process.stdout.write(d + '\n');
};
因为您的套接字是一个流,所以在没有您直接控制的情况下将会写入/读取数据,并且#write
不会更改您的数据或假设您在写入之间中断,因为您可能正在流式传输套接字上的大量信息,可能想要设置其他分隔符。
我绝对不是这方面的专家,但这对我来说似乎是合乎逻辑的答案。
修改:这是Nodejs streaming的副本,其结论与我指定的答案相同:使用流不是逐行的,设置你的自己的分隔符。
答案 1 :(得分:0)
也许所有写在同一刻度线上的数据都是批量发送的。
可能在接收端,节点将在发出数据事件之前组合单独的数据段。