public virtual void OnSignalRServerNotificationReceived(SignalREventArgs e) { if (this.SignalRServerNotification != null) { this.SignalRServerNotification(this, e); } }
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); }); }
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); })); }