通常,当我从一个客户端向另一个客户端发送一些 JSON 时,它工作正常。但是如果只有一个客户端,它仍然会发送数据包。我的解决方案是(在服务器端,在 node.js 中):
var clients = io.sockets.clients();
if(clients.length > 1){
// send stuff to other client
}
但是当我这样做时,会发生一些非常奇怪的事情。我将打开一个客户端,在 if 语句期间开始执行操作,而在发送 JSON 之前打印 JSON 的控制台什么也不做,因为只有一个客户端。当我打开另一个客户端并在 if 语句期间发起操作时,控制台将打印出 JSON 并将其发送到我的另一个客户端。但是,如果我转到我打开的第一个客户端并在 if 语句中发起操作,控制台将不会打印任何内容,也不会发送任何内容。为什么?我尝试将 if 语句更改为:
if("hello" === "hello"){
// do the same stuff as before
}
并且两个客户端都可以相互发送 JSON,但是因为我更改了 if 语句,所以在打开一个客户端的情况下,我仍然会发送无用的数据包。出于显而易见的原因,最佳情况是它不会与一个客户端发送数据包,但会与多个客户端正确发送数据包。
我希望这很清楚,如果不是,我很抱歉。
如果需要,我会发布更多代码。
编辑:
这是更新数组的代码:
var clients = io.sockets.clients();
io.sockets.on("connection", function (socket) {
clients.length++;
socket.on("disconnect", function() {
clients.length--;
console.log(clients.length + " clients are connected");
});
console.log(clients.length + " clients are connected");
});