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