// sends a typing signal to a room, conversation or user public void sendTypingSignal(int roomId, long conversationId, long ToID) { try { var ret = new { RoomId = roomId, ConversationId = conversationId, ToID = ToID, UserFrom = GetMyChatInfo(roomId) }; IList <string> connectionIDs = new BusinessLogic.UserAccess().GetFollowerList(CurrentUser.UserID, ToID, Enums.PageType.Profile, Enums.FriendshipStatus.FA) .Where(x => x.ConnectedBy == (byte)Enums.BroadCastType.Web).Select(x => x.ConnectionID).ToList(); Clients.Clients(connectionIDs).sendTypingSignal(ret); } catch (Exception ex) { ex.HelpLink = "It can be due to database connection error."; ex.Data.Add("Location : ", "Exception occured while sending typing signal."); ex.Data.Add("Applpication Tier : ", "1. QAConnect"); ex.Data.Add("Class : ", "Chat Hub"); ex.Data.Add("Method : ", "sendTypingSignal"); ex.Data.Add("Input Parameters : ", string.Format("User ID: {0},Friend ID : {1}, Room ID : {2}, Conversation ID : {3}", CurrentUser.UserID, ToID, roomId, conversationId)); Logs.Error("Error sending typing signal.", ex); } }
// sends a message to a room, conversation or user public void sendMessage(ChatMessageModel message)//int roomId, long conversationId, long otherUserId, string messageText, string clientGuid) { try { message.FromID = CurrentUser.UserID; message.CreatedOn = DateTime.Now; message.PostedByName = CurrentUser.FullName; message.PostedByAvatar = CurrentUser.ProfilePicture; message.FromName = CurrentUser.UserName; BroadcastChatMessage model = _hub.SendChatMessage(message); IList <string> connectionIDs = new BusinessLogic.UserAccess().GetFollowerList(model.ChatMessage.FromID, model.ChatMessage.ToID, model.ChatMessage.PageType, Enums.FriendshipStatus.FA) .Where(x => x.ConnectedBy == (byte)Enums.BroadCastType.Web).Select(x => x.ConnectionID).ToList(); Clients.Clients(connectionIDs).sendMessage(model.ChatMessage); } catch (Exception ex) { Logs.Error("Error while sending message.", ex); } }