【发布时间】:2019-07-09 07:02:17
【问题描述】:
在我的应用中,用户进入主屏幕,选择他们的用户名,然后导航到另一个页面,他们可以从该页面进入进入房间的页面。
我有一些代码,每次用户加入房间时都会增加一个变量clients。但是,每当有新用户加入时,clients 就会增加已连接用户的数量。这不是期望的行为。我的代码如下:
app.post('/race', function(req,res) {
let race = io.of('/race').on('connection', (socket) => {
console.log('A user has entered the race!');
socket.on('joinRoom', function(roomName) {
socket.room = roomName;
console.log(socket.room);
clients++;
console.log(clients);
});
socket.on('disconnect', function() {
clients--;
console.log("A user has disconnected");
console.log(clients);
});
});
res.sendFile(path.join(__dirname, '/client/race/index.html'));
});
为简洁起见,我从代码中删除了一些函数。但是将用户添加到clients 的主要功能仍然存在。当只有一个用户连接和断开时,它可以正常工作,但是当另一个用户加入时,它会加 2,使总数达到 3。当第三个用户加入时,它会增加 3,使总数达到 6。
socket.on('joinRoom 函数一定有问题 - 它似乎被称为连接用户的次数。请注意,console.log('A user has entered the race!'); 不会被调用两次。
为什么会出现这个问题?
【问题讨论】:
标签: javascript html node.js express socket.io