【发布时间】:2020-05-19 20:05:37
【问题描述】:
我有一个大厅系统,用户可以通过 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。我应该得到的输出也是 1,因为那个房间里只有 1 个用户。计数器显然工作错误。我应该怎么做才能修复某个房间内玩家的计数器。
编辑:当我console.log(data.lobbyId)时它是不同的,因此玩家连接到不同的房间。这是输出
ff05c541-45d5
1
18261413-4625
2
18261413-4625
3
【问题讨论】:
-
您是否在服务器上记录了 lobbyId 以查看它是否是正确的 lobbyId?
-
是的。我试过了,他们正在连接到不同的房间
标签: javascript node.js websocket socket.io