Example #1
0
 private ChatMessageInfo GetChatMessageInfo(ChatMessage chatMessage, string clientGuid)
 {
     if (chatMessage == null) throw new ArgumentNullException("chatMessage");
     return new ChatMessageInfo
     {
         Message = chatMessage.Message,
         UserFromId = chatMessage.UserFromId,
         UserToId = chatMessage.UserToId,
         ConversationId = chatMessage.ConversationId,
         RoomId = chatMessage.RoomId,
         ClientGuid = clientGuid
     };
 }
Example #2
0
        /// <summary>
        ///     Sends a message to a particular user
        /// </summary>
        public void SendMessage(int? roomId, int? conversationId, int? userToId, string message, string clientGuid)
        {
            var myUserId = this.GetMyUserId();

            var dbChatMessage = new ChatMessage
            {
                DateTime = DateTime.UtcNow,
                Message = message,
                UserFromId = myUserId,
                RoomId = roomId,
                ConversationId = conversationId,
                UserToId = userToId
            };

            this.Db.ChatMessages.Add(dbChatMessage);
            this.Db.SaveChanges();

            // gets the connections that have to receive the message
            var connectionIds = ChatHubCache.GetConnectionsToTarget(myUserId, roomId, conversationId, userToId);

            var chatMessage = this.GetChatMessageInfo(dbChatMessage, clientGuid);
            foreach (var connectionId in connectionIds)
                this.Clients.Client(connectionId).sendMessage(chatMessage);
        }