我正在尝试使用node.js和Socket.io服务器端以及react-native客户端创建配对服务器 当我打开两个模拟器时,两个连接都很好,但是当我记录配对队列的内容时,它只包含每个各自的用户,而不是两个用户。例如,当第二个用户连接时,两个用户都应该出现在队列的已记录内容中,但不会出现。
Server.js:
io.on("connection", socket => {
console.log("a user connected..." + "\n");
const queue = new LobbyQueue();
socket.on("addPlayer", username => {
if (queue.hasUser(username)) {
console.log("user already in queue...");
} else {
console.log("New user joined: " + username);
queue.enqueue(username);
socket.join("lobby");
const players = queue.getAll();
console.log("Players in queue: " + "\n" + players);
io.sockets.in("lobby").emit("players", players);
}
});
)};
我希望当第二个用户连接并加入会议室时,两个用户都将在控制台中登录。但是,仅记录一个用户名(每个客户端的用户名)。似乎队列对象不是两个客户端都通用的。还有,与此主题相关的术语吗?
答案 0 :(得分:0)
您的queue
是在客户端上创建的,因此每个客户端都有各自独立的队列。听起来好像您想将队列保留在服务器上,所以也许是这样的事情(但根据需要添加安全检查)?
const queue = new LobbyQueue();
sockets.on('connection', (socket) => {
socket.emit('connected', { users: queue.getAll() });
socket.on('addUser', user => queue.enqueue(user));
socket.on('getUsers', () => queue.getAll());
});