예제 #1
0
 public virtual void OnSignalRServerNotificationReceived(SignalREventArgs e)
 {
     if (this.SignalRServerNotification != null)
     {
         this.SignalRServerNotification(this, e);
     }
 }
예제 #2
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);
            });
        }
예제 #3
0
 protected void SignalRHub_SignalRServerNotification(object sender, SignalREventArgs e)
 {
     // Al enviarse un nuevo mensaje desde el servidor, lo agregamos a la conversación local
     Deployment.Current.Dispatcher.BeginInvoke(new Action(() =>
     {
         chatDialog.Text += "\r\n" + e.ChatMessageFromServer;
         scrollViewer.ScrollToVerticalOffset(scrollViewer.ExtentHeight + 100);
     }));
 }