protected override void OnMessage(MessageEventArgs e) { logger.LogDebug($"OnMessage: {e.Data}"); if (RTCIceCandidateInit.TryParse(e.Data, out var iceCandidateInit)) { logger.LogDebug("Got remote ICE candidate."); bool useCandidate = true; if (FilterRemoteICECandidates != null && !string.IsNullOrWhiteSpace(iceCandidateInit.candidate)) { useCandidate = FilterRemoteICECandidates(iceCandidateInit); } if (!useCandidate) { logger.LogDebug( $"WebRTCWebSocketPeer excluding ICE candidate due to filter: {iceCandidateInit.candidate}"); } else { _pc.addIceCandidate(iceCandidateInit); } } else if (RTCSessionDescriptionInit.TryParse(e.Data, out var descriptionInit)) { logger.LogDebug($"Got remote SDP, type {descriptionInit.type}."); var result = _pc.setRemoteDescription(descriptionInit); if (result != SetDescriptionResultEnum.OK) { logger.LogWarning($"Failed to set remote description, {result}."); _pc.Close("failed to set remote description"); this.Close(); } } else { logger.LogWarning($"websocket-server could not parse JSON message. {e.Data}"); } }
protected override void OnMessage(MessageEventArgs e) { logger.LogDebug($"OnMessage: {e.Data}"); if (Regex.Match(e.Data, @"^.*?candidate.*?,").Success) { logger.LogDebug("Got remote ICE candidate."); var iceCandidateInit = JsonConvert.DeserializeObject <RTCIceCandidateInit>(e.Data); _pc.addIceCandidate(iceCandidateInit); } else { RTCSessionDescriptionInit descriptionInit = JsonConvert.DeserializeObject <RTCSessionDescriptionInit>(e.Data); var result = _pc.setRemoteDescription(descriptionInit); if (result != SetDescriptionResultEnum.OK) { logger.LogWarning($"Failed to set remote description, {result}."); _pc.Close("failed to set remote description"); this.Close(); } } }