/** * 消息推送 * **/ public async Task SendMessage(string msgId, string from, string to, string message, string type) { type = type.Trim().ToLower(); if (type == "text") { TextMessage txtMsg = new TextMessage(); txtMsg.Id = new Guid(msgId); if (UserDictionary.ContainsKey(from)) { txtMsg.From = UserDictionary[from]; //UsersRepository.Load(); } else { var user = UsersRepository.Load(new Guid(from)); txtMsg.From = Mapper.Map <ChatMessageUser>(user); UserDictionary.TryAdd(from, txtMsg.From); } if (UserDictionary.ContainsKey(to)) { txtMsg.To = UserDictionary[to]; //UsersRepository.Load(); } else { var user = UsersRepository.Load(new Guid(to)); txtMsg.To = Mapper.Map <ChatMessageUser>(user); UserDictionary.TryAdd(to, txtMsg.To); } txtMsg.Type = MessageType.Text; txtMsg.CreateTime = DateTime.Now; txtMsg.Text = message; ChatMessages chatMsg = new ChatMessages(); chatMsg.Id = txtMsg.Id; chatMsg.From = from; chatMsg.To = to; chatMsg.Type = MessageType.Text; chatMsg.CreateTime = txtMsg.CreateTime; chatMsg.Message = txtMsg.ToJsonString(); ChatMessagesRepository.Add(chatMsg); ChatMessagesRepository.SaveChanges(); //如果对方在线,给对方发消息 if (ClientByUserId.ContainsKey(to)) { var ToConnectionId = ClientByUserId[to]; await Clients.Client(ToConnectionId).SendAsync("ReceiveMessage", chatMsg.Message); } await Clients.Client(Context.ConnectionId).SendAsync("ReceiveMessage", chatMsg.Message); } //await Clients.All.SendAsync("ReceiveMessage", to, message); //调用客户端方法 }
private ChatController GetController(IEnumerable <ChatMessages> data) { var mockContext = new Mock <FriendyContext>(); var mockSet = Helpers.GetMockDbSet(data.ToList()); mockContext.Setup(c => c.Set <ChatMessages>()).Returns(mockSet.Object); var mockWrapper = new Mock <RepositoryWrapper>(mockContext.Object); var rep = new ChatMessagesRepository(mockContext.Object); mockWrapper.Setup(c => c.ChatMessages).Returns(rep); var service = new ChatService(mockWrapper.Object, _imageSaver); var controller = new ChatController(_dialogNotifier, service); return(controller); }