字符串在节点中的TLS套接字连接的另一端连接

时间:2015-06-25 14:00:09

标签: javascript node.js sockets ssl buffer

我使用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 功能。
我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

标准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');
    });
});