/// <summary> /// 用户上线 /// </summary> public static void UserOnline(ChatUserVM ou) { var user = FindOnlineUser(ou.UserId); if (user == null) { OnlineUser2.Add(ou.UserId, ou); } else { var conn = ou.Conns.FirstOrDefault(); OnlineUser2[ou.UserId].Conns.Add(conn.Key, conn.Value); } }
///// <summary> ///// 处理加入组 ///// </summary> ///// <param name="groupVM">组信息</param> ///// <returns></returns> //public static ActionResultVM HandelJoinGroup(ChatGroupVM groupVM) //{ // var group = ccs.FindGroup(groupVM.GroupId); // if (group != null) // { // //加入用户 // var users = ccs.FindUsers(groupVM.GroupUser.Keys.ToList()); // if (users.Count > 0) // { // //用户加入组 // foreach (var user in users) // { // foreach (var conn in user.Conns.Keys) // { // await Groups.AddToGroupAsync(conn, group.GroupConnId); // } // //维护组 // ccs.OnlineGroup1[groupVM.GroupId].GroupUser.Add(user.UserId, user); // } // //推通知 // await PushMessageToGroup(new ChatMessageVM() // { // CmFromId = ccs.OnlineUser1.Values.First().UserId, // CmType = MessageType.EventJoinGroup.ToString(), // CmContent = users, // CmToIds = new List<string> { groupVM.GroupId } // }); // } // } //} ///// <summary> ///// 处理离开组 ///// </summary> ///// <param name="groupVM">组信息</param> ///// <returns></returns> //public static ActionResultVM HandelLeaveGroup(ChatGroupVM groupVM) //{ // var group = ccs.FindGroup(groupVM.GroupId); // if (group != null) // { // //离开用户 // var users = ccs.FindUsers(groupVM.GroupUser.Keys.ToList()); // if (users.Count > 0) // { // //删除用户 // foreach (var user in users) // { // foreach (var conn in user.Conns.Keys) // { // await Groups.RemoveFromGroupAsync(conn, group.GroupConnId); // } // //维护组 // ccs.OnlineGroup1[groupVM.GroupId].GroupUser.Remove(user.UserId); // } // //推通知 // await PushMessageToGroup(new ChatMessageVM() // { // CmFromId = ccs.OnlineUser1.Values.First().UserId, // CmType = MessageType.EventLeaveGroup.ToString(), // CmContent = users, // CmToIds = new List<string> { groupVM.GroupId } // }); // } // } //} ///// <summary> ///// 处理删除组 ///// </summary> ///// <param name="groupVM">组信息</param> ///// <returns></returns> //public static ActionResultVM HandelDelGroup(ChatGroupVM groupVM) //{ // var group = ccs.FindGroup(groupVM.GroupId); // if (group != null) // { // //组所有用户 // var users = ccs.FindUsers(group.GroupUser.Keys.ToList()); // if (users.Count > 0) // { // //删除组 // foreach (var user in users) // { // foreach (var conn in user.Conns.Keys) // { // await Groups.RemoveFromGroupAsync(conn, group.GroupConnId); // } // } // //维护组 // ccs.OnlineGroup1.Remove(group.GroupId); // //推通知 // await PushMessageToGroup(new ChatMessageVM() // { // CmFromId = ccs.OnlineUser1.Values.First().UserId, // CmType = MessageType.EventDelGroup.ToString(), // CmToIds = new List<string> { groupVM.GroupId } // }); // } // } //} #endregion #region 方法 /// <summary> /// 获取登录用户信息 /// </summary> /// <param name="hc">上下文</param> /// <returns></returns> public static ChatUserVM GetChatUserInfo(HttpContext hc) { if (hc.User.Identity.IsAuthenticated) { var ud = hc.User.FindFirstValue(ClaimTypes.UserData)?.ToJObject(); var cu = new ChatUserVM() { UserId = hc.User.FindFirstValue(ClaimTypes.NameIdentifier), UserName = hc.User.FindFirstValue(ClaimTypes.Name), UserPhoto = ud["UserPhoto"]?.ToString() }; return(cu); } return(null); }
/// <summary> /// 用户下线 /// </summary> public static void UserOffline(ChatUserVM ou) { var user = FindOnlineUser(ou?.UserId); if (user != null) { var cu = OnlineUser2[ou.UserId]; //多端登录 if (cu.Conns.Count > 1) { cu.Conns.Remove(ou.Conns.FirstOrDefault().Key); } else { OnlineUser2.Remove(ou.UserId); } } }