在SignalR中,你可以使用自定义的数据结构或字典来建立用户和房间之间的关联。 
一种常用的方法是创建一个Dictionary<string, string>,其中键(即key)是用户的Connection ID,值(即value)是用户所在的房间名称。 
在用户加入房间时,你可以将用户的Connection ID与房间名称进行关联,并将其添加到字典中。例如: 
 
// 创建一个用于存储用户和房间关联关系的字典 
Dictionary<string, string> userRoomMap = new Dictionary<string, string>(); 
 
// 当用户加入房间时调用的方法 
public async Task JoinRoom(string roomName) 
{ 
    // 获取当前连接的Connection ID 
    string connectionId = Context.ConnectionId; 
 
    // 将Connection ID与房间名称进行关联,并添加到字典中 
    userRoomMap[connectionId] = roomName; 
 
    // 其他逻辑:根据业务需求处理用户加入房间的操作 
} 
 
 
与上对应,当用户断开连接时,你可以查找与断开连接的Connection ID相关联的房间,并执行相应的操作。例如: 
 
// 当用户断开连接时调用的方法 
public override async Task OnDisconnectedAsync(Exception? exception) 
{ 
    // 获取断开连接的Connection ID 
    string connectionId = Context.ConnectionId; 
 
    // 如果在字典中找到了与Connection ID相关联的房间名称 
    if (userRoomMap.TryGetValue(connectionId, out string roomName)) 
    { 
        // 其他逻辑:根据业务需求处理用户离开房间的操作 
    } 
 
    // 其他逻辑:根据业务需求处理用户断开连接的操作 
 
    await base.OnDisconnectedAsync(exception); 
} 
 
 
 |