Beispiel #1
0
        public void PrcoessOfflineMessage(string uid)
        {
            string keya = RedisKeyManager.OfflineMessageQueue(uid);
            string keyb = RedisKeyManager.OfflineGroupMessageQueue(uid);
            //点对点离线消息
            List <Message> usermessage = DepositHelper.GetList <Message>(keya);
            //群聊消息
            List <Message> groupMessage = DepositHelper.GetList <Message>(keyb);

            SignalrClient.BLL.UserBLL user  = new SignalrClient.BLL.UserBLL();
            List <object>             objes = null;

            if (usermessage != null && usermessage.Count > 0)
            {
                var id       = usermessage[0].SendId;
                var sendUser = user.Get(c => c.UserId == id);
                objes = new List <object>();
                usermessage.ForEach(message =>
                {
                    objes.Add(new
                    {
                        username  = sendUser.UserName,
                        avatar    = sendUser.HeadPath,
                        type      = message.MessageType,
                        id        = message.SendId,
                        content   = message.MessageContent,
                        mine      = false,
                        timestamp = message.CreateTime,
                    });
                });
                Clients.User(uid).receiveOffline(objes);
                //发送完则删除
                DepositHelper.RemoveKey(keya);
            }
            if (groupMessage != null && groupMessage.Count > 0)
            {
                objes = new List <object>();
                groupMessage.ForEach(message =>
                {
                    objes.Add(new
                    {
                        username  = message.SendName,
                        avatar    = message.SendHeadPath,
                        type      = message.MessageType,
                        id        = message.ReceiveId,
                        sendid    = message.SendId,
                        content   = message.MessageContent,
                        mine      = false,
                        timestamp = message.CreateTime
                    });
                });

                Clients.User(uid).receiveGroupOffline(objes);
                //发送完则删除
                DepositHelper.RemoveKey(keyb);
            }
        }