Пример #1
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);
            }
        }
Пример #2
0
        /// <summary>
        ///     Sends a typing signal to a particular user
        /// </summary>
        public void SendTypingSignal(int?roomId, int?conversationId, int?userToId)
        {
            var myUserId = this.GetMyUserId();

            var connectionIds = ChatHubCache.GetConnectionsToTarget(myUserId, roomId, conversationId, userToId);

            foreach (var connectionId in connectionIds)
            {
                this.Clients.Client(connectionId).sendTypingSignal(new ChatTypingSignalInfo
                {
                    RoomId         = roomId,
                    ConversationId = conversationId,
                    UserToId       = userToId,
                    UserFrom       = this.GetUserInfo(myUserId)
                });
            }
        }