/// <summary> /// Message Handler: Received Ice Candidate. /// Client only. /// </summary> /// <param name="sender"></param> /// <param name="candidate"></param> private async void ReceivedIceCandidate(object sender, SignallerMessage message) { var init = JsonConvert.DeserializeObject <RTCIceCandidateInit>(message.Contents); RTCIceCandidate candidate = new RTCIceCandidate(init); await this.PeerConnections[this.LastRegisteredPeer].AddIceCandidate(candidate); }
/// <summary> /// Message Handler: Received Answer. /// Client only. /// </summary> /// <param name="sender"></param> /// <param name="answer"></param> private async void ReceivedAnswer(object sender, SignallerMessage message) { RTCSessionDescription answer = this.DeserializeSessionDescription(message.Contents); await this.PeerConnections[this.LastRegisteredPeer].SetRemoteDescription(answer); this.PeerConnections[this.LastRegisteredPeer].OnIceCandidate += this.OnIceCandidate; }
/// <summary> /// Message Handler: Received Offer. /// Source only. /// </summary> /// <param name="sender"></param> /// <param name="offer"></param> private async void ReceivedOffer(object sender, SignallerMessage message) { RTCSessionDescription offer = this.DeserializeSessionDescription(message.Contents); this.PeerConnections.Add(this.LastRegisteredPeer, await this.BuildPeerConnection(this.MediaOpts)); await this.PeerConnections[this.LastRegisteredPeer].SetRemoteDescription(offer); var answer = await this.PeerConnections[this.LastRegisteredPeer].CreateAnswer(new RTCAnswerOptions()); await this.PeerConnections[this.LastRegisteredPeer].SetLocalDescription(answer); await this.SendAnswer((RTCSessionDescription)answer); this.PeerConnections[this.LastRegisteredPeer].OnIceCandidate += this.OnIceCandidate; }
private async void ReceivedShutdown(object sender, SignallerMessage message) { // source -> all clients if (message.Contents == "") { this.Signaller.DisconnectFromSignaller(); await this.Shutdown(); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { this.RemoteVideo.Visibility = Visibility.Collapsed; }); } // client #message.Contents -> source else { await this.ShutdownIndividual(message.Contents); } }
/// <summary> /// Message Handler: Received Registration ID. /// Source only. /// </summary> /// <param name="sender"></param> /// <param name="message"></param> private void ReceivedRegistration(object sender, SignallerMessage message) { this.LastRegisteredPeer = message.Contents.ToString(); }