예제 #1
0
        /// <summary>
        /// 单条消息推送服务
        /// </summary>
        /// <param name="message">消息数据</param>
        private void PushMessage(MessageNotification msg, List <IMUser> onlineUsers, IHubContext <Hub> hub)
        {
            IMUser user = null;
            List <RecieverEntity> recievers = msg.Recievers;

            foreach (var reciever in recievers)
            {
                user = onlineUsers.SingleOrDefault(a => a.UserName == reciever.Reciever);
                if (user != null)
                {
                    //hub.Clients.Client(user.ConnectionID).onPushingMessage(new
                    //{
                    //    MsgType = 2,
                    //    Title = msg.Title,
                    //    Content = msg.Content,
                    //    Status = msg.Status,
                    //    MsgGUID = msg.MsgGUID,
                    //    SenderID = msg.SenderID,
                    //    Sender = msg.Sender,
                    //    SendTime = msg.SendTime,
                    //    AppName = msg.AppName,
                    //    AppInstanceID = msg.AppInstanceID,
                    //    FormRef = msg.FormRef,
                    //    FormCode = msg.FormCode,
                    //    FormText = msg.FormText
                    //});
                }
            }
        }
예제 #2
0
        public void Add(string acc, string connid, Platform platform)
        {
            var user = new IMUser()
            {
                Account      = acc,
                ConnectionId = connid,
                Platform     = platform,
            };

            CacheUser(user);
        }
예제 #3
0
        /// <summary>
        /// 当修改用户的IM信息时,给其他联系人发送透传消息通知更新当前用户的信息
        /// </summary>
        /// <returns></returns>
        public static void SendIMUserUpdateCmdMessage(IMUser imUser)
        {
            UpdateIMUserCmdMagBody cmdMagBody = new UpdateIMUserCmdMagBody(imUser);
            var otherUsers = Logic.BLL.UserInfoService.FindList(a => !a.UID.Equals(imUser.IMUserName, StringComparison.OrdinalIgnoreCase) && a.Status == 1 && a.HuanXinUUID.Length > 0)
                             .Select(a => a.UID).ToArray();

            if (otherUsers.Any())
            {
                MsgObject mgsObj = new MsgObject(MsgTargetType.users, otherUsers, cmdMagBody, null);
                emChat.SendMessages(mgsObj);
            }
        }
예제 #4
0
 public void OnLogin(YIMEngine.ErrorCode errorcode, string iYouMeID)
 {
     if (errorcode == YIMEngine.ErrorCode.Success)
     {
         _lastLoginUser = new IMUser(iYouMeID);
     }
     if (IMClient.Instance.ConnectListener != null)
     {
         IMConnectEvent e = new IMConnectEvent(Conv.ErrorCodeConvert(errorcode), errorcode == 0 ?
                                               ConnectEventType.CONNECTED:ConnectEventType.CONNECT_FAIL, iYouMeID);
         IMClient.Instance.ConnectListener(e);
     }
 }
예제 #5
0
        /// <summary>
        /// 登录用户的消息拉取服务
        /// </summary>
        /// <param name="user"></param>
        public void PullMessageList(IMUser user)
        {
            var msgService = new MessageService();
            var msgQuery   = new MessageQuery
            {
                PageIndex  = 0,
                PageSize   = 100,
                Reciever   = user.UserName,
                RecieverID = user.UserID,
                Status     = MsgStatusEnum.Unread
            };

            List <MessageEntity> unreadMsgList = null;
            //var hub = GlobalHost.ConnectionManager.GetHubContext<ClientPushHub>();
            //hub.Clients.Client(user.ConnectionID).onPullingMessage(unreadMsgList);
        }
예제 #6
0
        /// <summary>
        /// 把登录用户的名称信息添加到在线用户列表
        /// </summary>
        /// <param name="user"></param>
        public static void RegisterNewOnlineUser(IMUser user)
        {
            //先删除该用户名称下的所有ConnectionIds
            IMUser removedUser;

            Users.TryRemove(user.UserName, out removedUser);

            //添加新连接用户
            var newOnlineUser = new IMUser();

            newOnlineUser.UserID       = user.UserID;
            newOnlineUser.UserName     = user.UserName;
            newOnlineUser.ConnectionID = user.ConnectionID;

            Users.GetOrAdd(newOnlineUser.UserName, newOnlineUser);
        }
예제 #7
0
        public ResponseResult RegisterUserConnection(IMUser user)
        {
            var result = ResponseResult.Default();

            try
            {
                //注册为新在线用户
                ChatHub2.RegisterNewOnlineUser(user);

                //获取该用户的消息列表
                var msgModel = new MessageModel();
                msgModel.PullMessageList(user);

                result = ResponseResult.Success();
            }
            catch (System.Exception ex)
            {
                result = ResponseResult.Error(
                    string.Format("注册新用户失败:{0}", ex.Message)
                    );
            }
            return(result);
        }
예제 #8
0
 public UpdateIMUserCmdMagBody(IMUser IMUser)
 {
     this.IMUser = IMUser;
 }
예제 #9
0
 private void CacheUser(IMUser user)
 {
     _cacheHelper.Set(GetUserKey(user), user);
 }
예제 #10
0
 private string GetUserKey(IMUser user)
 {
     return(IMUserList + ((int)user.Platform) + user.Account + user.ConnectionId);
 }