相关疑难解决方法(0)

Socket.IO - 如何获取连接的套接字/客户端列表?

我正在尝试获取当前连接的所有套接字/客户端的列表.

io.sockets 遗憾的是,它没有返回数组.

我知道我可以使用数组保留自己的列表,但不要认为这是一个最佳解决方案有两个原因:

  1. 冗余.Socket.IO已经保留了此列表的副本.

  2. Socket.IO提供了为客户端设置任意字段值的方法(即:),socket.set('nickname', 'superman')所以如果我要维护自己的列表,我需要跟上这些变化.

救命?

node.js socket.io

144
推荐指数
14
解决办法
21万
查看次数

使用套接字io的已连接客户端用户名列表

我在NodeJS,socketIO和Express中创建了一个具有不同聊天室的聊天客户端.我试图在每个房间的连接用户上显示更新列表.

有没有办法将用户名连接到对象,所以当我这样做时,我可以看到所有用户名:

var users = io.sockets.clients('room')
Run Code Online (Sandbox Code Playgroud)

然后做这样的事情:

users[0].username
Run Code Online (Sandbox Code Playgroud)

我还能以其他方式做到这一点?

解决了: 这有点重复,但解决方案并没有在任何地方写得很清楚,所以我想我在这里写下来.这是由Andy Hin解决的帖子,由mak回答.还有这篇文章中的评论.

只是为了让事情更清楚一些.如果要在套接字对象上存储任何内容,可以执行以下操作:

socket.set('nickname', 'Guest');    
Run Code Online (Sandbox Code Playgroud)

套接字也有一个get方法,所以如果你想让所有的用户都这样做:

for (var socketId in io.sockets.sockets) {
    io.sockets.sockets[socketId].get('nickname', function(err, nickname) {
        console.log(nickname);
    });
}
Run Code Online (Sandbox Code Playgroud)

正如alessioalex指出的那样,API可能会发生变化,并且自己跟踪用户会更安全.您可以通过在断开连接时使用套接字ID来实现此目的.

io.sockets.on('connection', function (socket) { 
    socket.on('disconnect', function() { 
        console.log(socket.id + ' disconnected');
        //remove user from db
    }
});
Run Code Online (Sandbox Code Playgroud)

node.js express socket.io

35
推荐指数
1
解决办法
7万
查看次数

套接字IO客户:获取特定房间的客户列表

我正在尝试在特定房间中显示客户列表.我只想显示他们的用户名,而不是他们的套接字ID.

我在这里:

socket.set('nickname', "Earl");  
socket.join('chatroom1');
console.log('User joined chat room 1);

var roster = io.sockets.clients('chatroom1');
for ( i in roster )
{
   console.log('Username: ' + roster[i]);   
}
Run Code Online (Sandbox Code Playgroud)

没有任何运气让它列出套接字ID或任何东西.希望它能够返回昵称.

javascript node.js socket.io

19
推荐指数
5
解决办法
4万
查看次数

socket.io仅向位于房间A和B的用户广播

是否可以对位于A房间和B房间的名称空间的所有用户进行socket.io广播,而不是那些只在A房间或B房间的用户?

如果没有,我将如何自己实施?有没有办法检索位于给定房间的命名空间中的所有用户?

我在节点中使用socket.io 1.0

编辑:如果没有本机方法,我将如何创建自己的语法,如: socket.broadcast.in('room1').in('room2').emit(...)

javascript sockets node.js socket.io

12
推荐指数
1
解决办法
2712
查看次数

标签 统计

node.js ×4

socket.io ×4

javascript ×2

express ×1

sockets ×1