From 4db031c10e3839b1d8cc670f7cad49a03ef677bc Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 6 Feb 2023 17:59:36 +0200 Subject: [PATCH] feat: close connection to client when relay is deactivated --- client_manager.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/client_manager.py b/client_manager.py index b4d5b73..45f9eb6 100644 --- a/client_manager.py +++ b/client_manager.py @@ -53,6 +53,12 @@ class NostrClientManager: self.active_relays.append(relay_id) else: self.active_relays = [r for r in self.active_relays if r != relay_id] + await self.stop_clients_for_relay(relay_id) + + async def stop_clients_for_relay(self, relay_id: str): + for client in self.clients: + if client.relay_id == relay_id: + await client.stop(reason=f"Relay '{relay_id}' has been deactivated.") class NostrClientConnection: @@ -77,6 +83,14 @@ class NostrClientConnection: except Exception as e: logger.warning(e) + async def stop(self, reason: Optional[str]): + try: + message = reason if reason else "Server closed webocket" + await self.websocket.send_text(json.dumps(["NOTICE", message])) + await self.websocket.close() + except: + pass + async def notify_event(self, event: NostrEvent) -> bool: for filter in self.filters: if filter.matches(event):