【发布时间】:2020-12-11 07:52:38
【问题描述】:
我想在套接字房间变量中存储一些信息,但收到以下错误:UnhandledPromiseRejectionWarning: TypeError: Cannot set property 'host' of undefined
这是我的代码:
io.on('connection', (socket, next) => {
socket.on('create game', async () => {
console.log('Creating game...');
socket.username = await generateUsername();
socket.roomId = generateId();
socket.join(socket.roomId);
io.sockets.adapter.rooms[socket.roomId].host = socket.username;
io.sockets.adapter.rooms[socket.roomId].isOpen = true;
io.sockets.adapter.rooms[socket.roomId].players = [socket.username];
console.log('Game created! ID: ', socket.roomId);
});
}
如果我尝试记录 socket.roomId,它将返回类似 rBAhx0 的内容。当我登录io.sockets.adapter.rooms 时,我得到以下信息:
Map {
'PX_o3Di9sp_xsD6oAAAB' => Set { 'PX_o3Di9sp_xsD6oAAAB' },
'rBAhx0' => Set { 'PX_o3Di9sp_xsD6oAAAB' }
}
但是,当我尝试登录 io.sockets.adapter.rooms[socket.roomId] 时,它会返回 undefined。我该如何解决这个问题?
【问题讨论】:
标签: javascript node.js express websocket socket.io