Beispiel #1
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task Send(MessageViewModel model)
        {
            if (!model.IsValid())
            {
            }

            // 获取发送者的信息
            var code         = model.SessionCode;
            var connectionId = Context.ConnectionId;

            var sender = _onlineMeetingRoomManager.GetParticipantByConnectionId(code, connectionId);
            var room   = await _meetingRoomManager.GetBySessionCodeAsync(code);

            if (sender != null && room != null)
            {
                // 持久化消息
                var message = new Message(sender.Id, sender.Nickname, model.Content, sender.Language, model.IsVoice, model.VoiceFile);
                room.AppendMessage(message);
                await _meetingRoomManager.UpdateAsync(room);

                // 发送消息到群组中
                var result = _mapper.Map <Message, ReturnMessage>(message);
                await Clients.Group(code).SendAsync("ReceiveMessage", result);
            }
        }