kim*_*sen 35 node.js express socket.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)
ale*_*lex 44
有类似的问题可以帮助您:
我的建议是跟踪自己的连接客户端列表,因为您永远不知道Socket.IO的内部API何时可能会发生变化.因此,在每个连接上将客户端添加到阵列(或数据库),并在每个连接上删除他.
| 归档时间: |
|
| 查看次数: |
68143 次 |
| 最近记录: |