我正在与Express js聊天,我想将每个用户名都放入一个数组中。我使用socket.io 2.1.1。 解决方案应该很简单,但是我不知道如何访问套接字io中的数据。 这是我执行“ console.log(io.sockets.clients());”时得到的信息
backref
我想要的是“已连接”下的用户名。 所以我想有一个像这样的数组:[“ toto”,“ titi”]。
感谢您的帮助, 托马斯
答案 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”套接字, 每个客户端都检测到新用户(做一些事情)并发送“我已连接”套接字”, 服务器广播连接的每个用户的用户名。
最后,每个用户都刷新其有关所连接的人的信息。
非常感谢, 托马斯