套接字io,如何获取此数据

时间:2019-01-12 21:04:44

标签: express socket.io

我正在与Express js聊天,我想将每个用户名都放入一个数组中。我使用socket.io 2.1.1。 解决方案应该很简单,但是我不知道如何访问套接字io中的数据。 这是我执行“ console.log(io.sockets.clients());”时得到的信息

backref

我想要的是“已连接”下的用户名。 所以我想有一个像这样的数组:[“ toto”,“ titi”]。

感谢您的帮助, 托马斯

2 个答案:

答案 0 :(得分:0)

您需要这样做-

从客户端将用户名发送到服务器

客户端:

var socket = io.connect();
data = {name: userName};
socket.emit('data', data);

在服务器端,您将接收数据,检索用户名并将其存储在数组中。

服务器端:

var users = [];
socket.on('data' function(data) {
    var userName = data.name;
    users.push(userName);
});
console.log(users);

使用io.sockets.clients()-

您会看到console.log中的connected是一个对象,并且这些对象的键是所有已连接的用户。提取出来

var connectedUsers = Object.keys(io.sockets.connected).map(function(socketId) {
    return io.sockets.connected[socketId].username;
});

console.log(connectedUsers);

答案 1 :(得分:0)

谢谢您的回答。 实际上,我做了类似您的想法的事情,发送套接字以获取用户名: 当用户建立连接时,他会发送“ new_user”套接字, 服务器广播一个“ new_user”套接字, 每个客户端都检测到新用户(做一些事情)并发送“我已连接”套接字”, 服务器广播连接的每个用户的用户名。

最后,每个用户都刷新其有关所连接的人的信息。

非常感谢, 托马斯