Exemplo n.º 1
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <MessageLogDto> SendMessage(MessageLogInput input)
        {
            // 获取消息接收者
            var receiver = await _userManager.GetUserByIdAsync(input.ReceiverUserId);

            try
            {
                var entity = input.MapTo <MessageLog>();
                // 添加租户Id
                entity.TenantId = AbpSession.TenantId;
                var message = await _messageManager.SendMessage(entity);

                // 获取当前在线用户
                var clients = UserClients.Values
                              .Where(c => (c.UserId == receiver.Id && c.TenantId == receiver.TenantId));
                var dto = message.MapTo <MessageLogDto>();
                foreach (var client in clients)
                {
                    await Clients.Client(client.ConnectionId).SendAsync("getMessage", dto);
                }
                return(dto);
            }
            catch (UserFriendlyException ex)
            {
                Logger.Warn("Could not send chat message to user: " + input.ReceiverUserId);
                Logger.Warn(ex.ToString(), ex);
                return(null);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 读消息
 /// </summary>
 /// <param name="input"></param>
 /// <returns></returns>
 public async Task ReadMessage(MessageLogInput input)
 {
     await _messageManager.ReadMessage(input.ReceiverUserId, input.CreatorUserId);
 }