Mercurial > libervia-web
diff libervia/web/pages/calls/_browser/webrtc.py @ 1561:7dbb131bbb9e
browser (calls): update status on various events (connection established, connection lost, etc.)
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 17 Aug 2023 14:58:21 +0200 |
parents | 410064b31dca |
children | e3449beac8d8 |
line wrap: on
line diff
--- a/libervia/web/pages/calls/_browser/webrtc.py Wed Aug 16 18:34:07 2023 +0200 +++ b/libervia/web/pages/calls/_browser/webrtc.py Thu Aug 17 14:58:21 2023 +0200 @@ -19,6 +19,9 @@ self.reset_instance() bridge.register_signal("ice_candidates_new", self._on_ice_candidates_new) bridge.register_signal("ice_restart", self._on_ice_restart) + self.on_connection_established_cb = None + self.on_reconnect_cb = None + self.on_connection_lost_cb = None self.is_audio_muted = None self.is_video_muted = None self._is_sharing_screen = False @@ -192,10 +195,15 @@ state = self._peer_connection.iceConnectionState log.info(f"ICE Connection State changed to: {state}") - if state == "failed": + if state == "connected": + if self.on_connection_established_cb is not None: + self.on_connection_established_cb() + elif state == "failed": log.error("ICE connection failed. Check network connectivity and ICE configurations.") elif state == "disconnected": log.warning("ICE connection was disconnected.") + if self.on_connection_lost_cb is not None: + self.on_connection_lost_cb() def on_ice_candidate_error(self, event): """Log ICE error, useful for debugging""" @@ -429,6 +437,8 @@ log.debug(f"ignoring peer ice candidates for {sid=} ({self.sid=}).") return log.debug("ICE has been restarted") + if self.on_reconnect_cb is not None: + self.on_reconnect_cb() async def on_ice_candidates_new(self, candidates: dict) -> None: """Called when new ICE canidates are received from peer