是否可以强制所有客户端使用 socket.io 进行更新?我尝试了以下方法,但是当新客户端连接时,它似乎没有更新其他客户端:
服务器端 JavaScript:
我正在尝试向所有客户端发送一条消息,其中包含当前连接的用户数量,它正确发送了用户数量....但是客户端本身似乎在页面被更新之前不会更新神清气爽。我希望这是实时发生的。
var clients = 0;
io.sockets.on('connection', function (socket) {
++clients;
socket.emit('users_count', clients);
socket.on('disconnect', function () {
--clients;
});
});
客户端 JavaScript:
var socket = io.connect('http://localhost');
socket.on('connect', function(){
socket.on('users_count', function(data){
$('#client_count').text(data);
console.log("Connection");
});
});
最佳答案
它实际上根本没有向其他客户端发送更新,而只是向刚刚连接的客户端发送(这就是你在第一次加载时看到更新的原因)
// socket is the *current* socket of the client that just connected
socket.emit('users_count', clients);
相反,您想发射到所有个套接字
io.sockets.emit('users_count', clients);
或者,您可以使用广播功能,它将消息发送给除了启动它的套接字之外的每个人:
socket.broadcast.emit('users_count', clients);
关于javascript - 使用 Socket.io 更新所有客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7352164/