这直接取自 Professional Node.js book。我理解了代码的逻辑,但我不明白“oldroom”是从哪里出现的!第二行让我很困惑。在这里,我们要将套接字与房间相关联。套接字还没有加入房间所以在第二行我们为什么要做 socket.get('room',.....)。我们可以省略第 2 行和第 3 行吗?
socket.on('join', function(room) {
socket.get('room', function(err, oldRoom) {
if (err) { throw err; }
socket.set('room', room, function(err) {
if (err) { throw err; }
socket.join(room);
if (oldRoom) {
socket.leave(oldRoom);
}
socket.get('username', function(err, username) {
if (! username) {
username = socket.id;
}
});
socket.emit('serverMessage', 'You joined room ' + room);
socket.get('username', function(err, username) {
if (! username) {
username = socket.id;
}
socket.broadcast.to(room).emit('serverMessage', 'User ' +
username + ' joined this room');
});
});
});
});