繁体   English   中英

房间中的玩家计数错误 socket.io

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM