/// <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); } }
/// <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) }); } }