我正在通过 TCP 套接字连接到节点服务器,并且在每次后续调用中重复写入套接字的数据存在问题。
我的服务器调用以下函数写入每个连接的客户端:
clients.forEach(function (client) {
var string = "hello";
client.write(string);
client.on('data', function(data) {
console.log(data.toString());
});
});
这有效并将字符串“hello”广播到每个连接的套接字。这个想法是每个客户端都会回复一个响应,该响应将输出到 console.log。
在每个客户上,我都有以下内容:
client.on('data', function(data) {
console.log(data);
var response = "Hello back";
console.log('RES: ' + response);
client.write(response);
});
每个客户端都会收到 hello 并响应请求。问题出现了,在每个 N 响应中,服务器从每个客户端接收 N 次所有内容。
因此,在第一次交换时,它很简单
你好
你好回来
但第二个是:
你好
你好回来
你好回来
任何想法为什么会发生这种情况?我是否需要在每次交换时刷新套接字或其他东西?