- /// <summary>
- /// 创建聊天室
- /// </summary>
- /// <param name="roomName"></param>
- public void CreateRoom(string roomName)
- {
- var room = DbContext.Rooms.Find(x => x.RoomName == roomName);
- if (room == null)
- {
- var rom = new ChatRoom
- {
- RoomName = roomName,
- RoomId = Guid.NewGuid().ToString().ToUpper()
- };
- DbContext.Rooms.Add(rom);// 加入房间列表
- UpdateAllRoomList();// 更新房间列表
- Clients.Client(Context.ConnectionId).showGroupMsg("success");
- }
- else
- {
- Clients.Client(Context.ConnectionId).showGroupMsg("error");
- }
- }
- /// <summary>
- /// 加入聊天室
- /// </summary>
- public void JoinRoom(string roomId,string current_Id)
- {
- // 查询聊天室,
- var room = DbContext.Rooms.Find(x => x.RoomId == roomId.Trim());
- var u = userInfoList.Find(x => x.UserID == current_Id);
- if (room != null)
- {
- // 检测该用户是否存在在该房间
- var isExistUser = room.Users.Find(x => x.UserConnectionId == Context.ConnectionId);
- if (isExistUser == null)
- {
- var user = DbContext.Users.Find(x => x.UserConnectionId == Context.ConnectionId);
- user.Rooms.Add(room);// 用户信息中加入房间信息
- room.Users.Add(user);// 房间信息中加入用户信息
- Groups.Add(Context.ConnectionId, room.RoomName);// 添加到组中
- Clients.Group(room.RoomName, new string[0]).showSysGroupMsg(u.UserName);
- }
- }
- else
- {
- Clients.Client(Context.ConnectionId).showMessage("该群组不存在");
- }
- }
- /// <summary>
- /// 给指定房间内的所有用户发消息
- /// </summary>
- /// <param name="room"> 房间名 </param>
- /// <param name="message"> 消息 </param>
- public void SendMessageByRoom(string roomId, string current_Id, string message)
- {
- var room = DbContext.Rooms.FirstOrDefault(x=>x.RoomId==roomId);
- var user = userInfoList.Find(x => x.UserID == current_Id);
- if (room != null && user != null)
- {
- Clients.Group(room.RoomName, new string[0]).showGroupByRoomMsg(user.UserName,room.RoomId, message);
- AddChatHistory(ChatType.GroChat, user.UserName, message, user.UserID, "", room.RoomId);
- }
- }
- /// <summary>
- /// 退出房间
- /// </summary>
- public void RemoveRoom(string roomId)
- {
- var room = DbContext.Rooms.Find(x => x.RoomId == roomId);
- if (room != null)
- {
- var user = DbContext.Users.Find(x => x.UserConnectionId == Context.ConnectionId);
- room.Users.Remove(user);// 从房间里移除该用户
- if (room.Users.Count <= 0)
- {
- DbContext.Rooms.Remove(room);// 如果房间里没人了, 删除该房间
- }
- Groups.Remove(Context.ConnectionId, room.RoomName);
- UpdateAllRoomList();// 更新房间列表
- Clients.Client(Context.ConnectionId).removeRoom();
- }
- else
- {
- Clients.Client(Context.ConnectionId).showMessage("该房间不存在");
- }
- }
来源: https://www.cnblogs.com/wwym/p/8780798.html