是否可以强制所有客户端使用socket.io更新?我尝试了以下操作,但是当新客户端连接时,它似乎没有更新其他客户端:
我正在尝试向所有客户端发送一条消息,其中包含当前已连接的用户数,它可以正确发送用户数量…。但是,客户端本身似乎不会更新,直到刷新页面为止。我希望这是实时发生的。
var clients = 0; io.sockets.on('connection', function (socket) { ++clients; socket.emit('users_count', clients); socket.on('disconnect', function () { --clients; }); });
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);