Node.js套接字管道最后一个数据包



我有Node服务器,该服务器创建了与另一侧tcp服务器的tcp套接字连接。我正试图通过管道传输tcp数据,但当我第二次收到消息时,我在同一个流中同时收到了新消息和前一条消息(第一条)。我该怎么解决这个问题?

var net = require('net');
var HOST = '127.0.0.1'; // parameterize the IP of the Listen 
var PORT = 6969; // TCP LISTEN port 
net.createServer(function(sock) {
    console.log('CONNECTED: ' + sock.remoteAddress + ':' + sock.remotePort);
    sock.on('data', function(data) {
        sock.write(data);
        socket.pipe(socket);
    });
    sock.on('close', function(data) {
        console.log('CLOSED: ' + sock.remoteAddress + ' ' + sock.remotePort);
    });
}).listen(PORT, HOST);

我假设您想要创建一个echo服务器。

所以你有两个选择-任一管道:

// [...]
net.createServer(function(sock) {
   sock.pipe(sock);
}
// [...]

或者订阅数据并手动写入套接字(与管道相同)

// [...]
net.createServer(function(sock) {
    sock.on('data', function(data) {
        sock.write(data);
    });
}
// [...]

对于您当前的程序,当有人第一次发送数据时,您会回显数据,但也会创建管道连接,这意味着下次数据会发送两次(如您所述)。

最新更新