javascript - 使用 Socket.io 更新所有客户端?

标签 javascript node.js socket.io

是否可以强制所有客户端使用 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/

相关文章:

node.js - 将查询结果按间隔从后端推送到前端

javascript - jQuery 链接在 WordPress function.php 中不起作用

node.js - 通过 nodejs 和 websockets 将功能从 openlayers 保存到 postgis

javascript - 将所有凭据放入文件 .json

socket.io - 需要未知模块 "socket.io-client/socket.io"

node.js - 无法使用node.js和socket.io从客户端向服务器发送消息

javascript - 任何支持 JSON 对象的标签云小部件?

javascript - 单击按钮时更改选项卡

javascript - python网络爬虫错误'没有这样的元素: Unable to locate element

javascript - Node.js:无法通过 '0xff' 设置值 'buf.writeIntBE()'