首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否使用Socket.io更新所有客户端?

是否使用Socket.io更新所有客户端?
EN

Stack Overflow用户
提问于 2011-09-09 01:29:52
回答 2查看 82K关注 0票数 82

是否可以强制所有客户端使用socket.io进行更新?我尝试了以下方法,但似乎在新客户端连接时不会更新其他客户端:

服务器端JavaScript:

我正在尝试向所有客户端发送一条消息,其中包含当前连接的用户数,它会正确地发送用户数...但是,在刷新页面之前,客户端本身似乎不会更新。我希望这是实时发生的。

代码语言:javascript
复制
var clients = 0;
io.sockets.on('connection', function (socket) {
  ++clients;
  socket.emit('users_count', clients);    
  socket.on('disconnect', function () {
    --clients;
  });
});

客户端JavaScript:

代码语言:javascript
复制
var socket = io.connect('http://localhost');

socket.on('connect', function(){
  socket.on('users_count', function(data){
    $('#client_count').text(data);
    console.log("Connection");
  });
});
EN

回答 2

Stack Overflow用户

发布于 2018-10-12 18:39:41

您可以按照此示例来实现您的场景。

你可以让所有的客户端加入一个公共房间来发送一些更新。每个插座都可以像这样加入房间:

代码语言:javascript
复制
currentSocket.join("client-presence") //can be any name for room

然后,您可以让客户端键入您的套接字,其中包含多个客户端的数据(id和状态),如果一个客户端的状态发生更改,您可以在套接字上接收到如下所示的更改事件:

代码语言:javascript
复制
socket.on('STATUS_CHANGE',emitClientsPresence(io,namespace,currentSocket); //event name should be same on client & server side for catching and emiting

现在,您希望所有其他客户端都得到更新,因此您可以执行以下操作:

代码语言:javascript
复制
emitClientsPresence => (io,namespace,currentSocket) {
  io.of(namespace)
        .to(client-presence)
        .emit('STATUS_CHANGE', { id: "client 1", status: "changed status" });
}

这将向所有加入“客户端存在”房间的套接字发出STATUS_CHANGE事件,然后您可以在客户端捕获相同的事件并更新其他客户端的状态。

票数 0
EN

Stack Overflow用户

发布于 2020-12-29 18:48:23

根据这个Broadcasting。对于nodejs服务器,您可以使用以下内容:

代码语言:javascript
复制
io.emit('event_id', {your_property: 'your_property_field'});

请务必初始化websocket,例如:

代码语言:javascript
复制
var express = require('express');
var http = require('http');
var app = express();
var server = http.Server(app);
var io = require('socket.io')(server);

app.get('/', function (req, res) {
    res.send('Hello World!');
    io.emit('event_hello', {message: 'Hello Socket'});
});

server.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

在这种情况下,当用户到达您服务器时,将使用json对象{event_hello:'Hello Socket'}向所有web套接字客户端广播“message”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7352164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档