# HG changeset patch # User Goffi # Date 1692197573 -7200 # Node ID 410064b31dcae2189f727b585288dacfa2673e07 # Parent 2f2250ddad23cc2451b8616eb9790b4e0e4d8686 browser (calls): add some logs useful for debugging diff -r 2f2250ddad23 -r 410064b31dca libervia/web/pages/calls/_browser/webrtc.py --- a/libervia/web/pages/calls/_browser/webrtc.py Tue Aug 15 17:30:20 2023 +0200 +++ b/libervia/web/pages/calls/_browser/webrtc.py Wed Aug 16 16:52:53 2023 +0200 @@ -18,6 +18,7 @@ def __init__(self): self.reset_instance() bridge.register_signal("ice_candidates_new", self._on_ice_candidates_new) + bridge.register_signal("ice_restart", self._on_ice_restart) self.is_audio_muted = None self.is_video_muted = None self._is_sharing_screen = False @@ -186,6 +187,23 @@ else: log.debug("All ICE candidates gathered") + def on_ice_connection_state_change(self, event): + """Log ICE connection change, mainly used for debugging""" + state = self._peer_connection.iceConnectionState + log.info(f"ICE Connection State changed to: {state}") + + if state == "failed": + log.error("ICE connection failed. Check network connectivity and ICE configurations.") + elif state == "disconnected": + log.warning("ICE connection was disconnected.") + + def on_ice_candidate_error(self, event): + """Log ICE error, useful for debugging""" + log.error(f"ICE Candidate Error: {event.errorText} (Code: {event.errorCode})") + log.debug( + f"URL: {event.url}, Host candidate: {event.hostCandidate}, Port: {event.port}" + ) + def _set_media_types(self, offer): """Sets media types from offer SDP @@ -240,7 +258,12 @@ peer_connection = window.RTCPeerConnection.new(rtc_configuration) peer_connection.addEventListener("track", self.on_track) peer_connection.addEventListener("negotiationneeded", self.on_negotiation_needed) + peer_connection.addEventListener( + "iceconnectionstatechange", + self.on_ice_connection_state_change + ) peer_connection.addEventListener("icecandidate", self.on_ice_candidate) + peer_connection.addEventListener("icecandidateerror", self.on_ice_candidate_error) peer_connection.addEventListener( "icegatheringstatechange", self.on_ice_gathering_state_change ) @@ -401,6 +424,12 @@ candidates = json.loads(candidates_s) aio.run(self.on_ice_candidates_new(candidates)) + def _on_ice_restart(self, sid: str, side: str, profile: str): + if sid != self.sid: + log.debug(f"ignoring peer ice candidates for {sid=} ({self.sid=}).") + return + log.debug("ICE has been restarted") + async def on_ice_candidates_new(self, candidates: dict) -> None: """Called when new ICE canidates are received from peer diff -r 2f2250ddad23 -r 410064b31dca libervia/web/server/server.py --- a/libervia/web/server/server.py Tue Aug 15 17:30:20 2023 +0200 +++ b/libervia/web/server/server.py Wed Aug 16 16:52:53 2023 +0200 @@ -570,6 +570,7 @@ self.bridge.register_signal( "ps_event_raw", partial(LiberviaPage.on_node_event, self), "plugin" ) + self.bridge.register_signal( "message_new", partial(self.on_signal, "message_new") ) @@ -583,6 +584,9 @@ "ice_candidates_new", partial(self.on_signal, "ice_candidates_new"), "plugin" ) self.bridge.register_signal( + "ice_restart", partial(self.on_signal, "ice_restart"), "plugin" + ) + self.bridge.register_signal( "action_new", self.action_new_handler, )