예제 #1
0
        public virtual void JoinChat(ChatClient phoneChatMessage)
        {
            // Disparamos la conexión y nos unimos a la sala
            this.ChatConnection.Start().ContinueWith(task =>
            {
                if (task.IsFaulted)
                {
                    // Manejar el error ante un fallo en la conexión
                }
            });

            // Escuchamos los eventos del servidor y los disparamos
            this.SignalRChatHub.On<string>("addChatMessage", message =>
            {
                SignalREventArgs chatArgs = new SignalREventArgs();
                var serverMsg = JsonConvert.DeserializeObject<ChatServer>(message);
                chatArgs.ChatMessageFromServer = serverMsg.Name + ": " + serverMsg.Message;

                // Disparamos nuestro evento local
                OnSignalRServerNotificationReceived(chatArgs);
            });

            this.SignalRChatHub.On<string>("showIsTyping", info =>
            {
                SignalRTypingArgs typingArgs = JsonConvert.DeserializeObject<SignalRTypingArgs>(info);

                OnSignalRSomeoneIsTyping(typingArgs);
            });

            this.SignalRChatHub.On<string>("hideIsTyping", info =>
            {
                SignalRTypingArgs typingArgs = JsonConvert.DeserializeObject<SignalRTypingArgs>(info);

                OnSignalRHideIsTyping(typingArgs);
            });
        }
예제 #2
0
 public virtual void HideIsTyping(ChatClient phoneChatMessage)
 {
     // Posteamos al server que se dejó de escribir
     this.SignalRChatHub.Invoke("FinishTyping").Wait();
 }
예제 #3
0
 public virtual void SomeoneIsTyping(ChatClient phoneChatMessage)
 {
     // Posteamos al server que alguien comenzó a escribir
     this.SignalRChatHub.Invoke("SomeoneIsTyping", phoneChatMessage.ChatUserName).Wait();
 }
예제 #4
0
 public virtual void Chat(ChatClient phoneChatMessage)
 {
     // Posteamos el mensaje al server
     this.SignalRChatHub.Invoke("PushMessageFromPhone", phoneChatMessage.ChatUserName, phoneChatMessage.ChatMessage).Wait();
 }
예제 #5
0
 public virtual void LeaveChat(ChatClient phoneChatMessage)
 {
     // Dejamos la sala de chat
     this.SignalRChatHub.Invoke("DisconnectFromPhone", phoneChatMessage.ChatUserName).Wait();
 }