string在节点的TLS套接字连接的另一端连接

我使用tail-always拖尾文件,并在节点中使用TLS套接字将数据传输到另一台服务器。 这是将线路传输到另一台服务器的代码

var client = tls.connect(port,serveraddress, options, function() { tail.on('line', function(data) { console.log(data.toString('utf-8')) client.write(data.toString('utf-8')); }); tail.on('error', function(data) { console.log("error:", data); }); tail.watch(); }); 

在另一端服务器侦听端口并抓取文本。 代码是:

 var server = tls.createServer(options, function(tslsender) { tslsender.on('data', function(data) { console.log(data.toString('utf-8')); }); tslsender.on('close', function() { console.log('closed connection'); }); }); 

当一行一次添加到文件中时,程序完美地工作,但是当多行添加到文件时,行被连接在服务器端。我已经确认它们在client.write函数之前没有被连接。
我怎么解决这个问题 ?

标准stream只是一堆字节。 在一个stream的一端写一行,对于另一端如何接收数据没有影响。 如果你想让你的服务器处理数据,一次只接收一行数据,你需要在服务器上使用类似split

 var split = require('split'); var server = tls.createServer(options, function(tslsender) { let lineStream = tslsender.pipe(split()); lineStream.on('data', function(data) { console.log(data.toString('utf-8')); }); tslsender.on('close', function() { console.log('closed connection'); }); });