WebSocket房间加入后怎么确保用户不重复创建?
我在用 WebSocket 做一个多人协作的白板应用,现在卡在房间管理这块了。每次用户输入房间号进房间,我担心会不小心重复创建同一个房间,导致状态混乱。
我试过在服务端用 Map 存房间,但客户端如果快速点两次“加入”,就会发两个 join 请求,结果房间被初始化两次。有没有什么靠谱的方式能保证房间只创建一次?
const rooms = new Map();
function joinRoom(roomId) {
if (!rooms.has(roomId)) {
rooms.set(roomId, { users: [], canvasData: {} });
}
// 这里可能被并发调用,导致重复初始化?
}
async函数和Promise实现简单互斥。就这样。