[英]Wrong player count in a room socket.io
我有一个大厅系统,用户可以通过 lobbbyId 加入房间。 这是我的客户端
const socket = io('/chat');
socket.emit("player-join", {
name: returnObj.name,
lobbyId: returnObj.lobbyId
})
这就是我在服务器端捕获玩家加入的方式。
socket.on('player-join', data => {
socket.join(data.lobbyId)
console.log(Object.keys(io.sockets.in(data.lobbyId).connected).length)
})
因此,当用户加入 id ff05c541-45d5
的房间时,我的console.log
打印 1。但是当另一个用户加入 id 18261413-4625
的房间时,我的console.log
打印 2。我应该得到的 output 也是 1,因为只有该房间中有 1 位用户。 计数器显然工作错误。 我应该怎么做才能修复某个房间中玩家的计数器。
编辑:当我console.log(data.lobbyId)
它是不同的,因此玩家连接到不同的房间。 这是 output
ff05c541-45d5
1
18261413-4625
2
18261413-4625
3
要获取加入房间的客户列表,用户namespace.clients(callback)
socket.io docs 。
socket.on('player-join', data => {
socket.join(data.lobbyId)
io.of('/chat').in(data.lobbyId).clients((err, data) => {
console.log("=== clients in room: ", data.length); // data is an array of clients
});
//console.log(Object.keys(io.sockets.in(data.lobbyId).connected).length)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.