Enhances websocket connection robustness

Improves websocket connection reliability by predefining the websocket URL and handling potential queueing errors.

This change also updates the websocket close message for clarity.
This commit is contained in:
padreug 2025-11-03 23:58:30 +01:00
parent 87a4864c49
commit 725037e669

View file

@ -31,9 +31,11 @@ class NostrClient:
logger.debug(f"Connecting to websockets for 'nostrclient' extension...") logger.debug(f"Connecting to websockets for 'nostrclient' extension...")
relay_endpoint = encrypt_internal_message("relay", urlsafe=True) relay_endpoint = encrypt_internal_message("relay", urlsafe=True)
ws_url = f"ws://localhost:{settings.port}/nostrclient/api/v1/{relay_endpoint}"
on_open, on_message, on_error, on_close = self._ws_handlers() on_open, on_message, on_error, on_close = self._ws_handlers()
ws = WebSocketApp( ws = WebSocketApp(
f"ws://localhost:{settings.port}/nostrclient/api/v1/{relay_endpoint}", ws_url,
on_message=on_message, on_message=on_message,
on_open=on_open, on_open=on_open,
on_close=on_close, on_close=on_close,
@ -181,13 +183,16 @@ class NostrClient:
def on_message(_, message): def on_message(_, message):
logger.info(f"[NOSTRMARKET DEBUG] Received websocket message: {message[:200]}...") logger.info(f"[NOSTRMARKET DEBUG] Received websocket message: {message[:200]}...")
try:
self.recieve_event_queue.put_nowait(message) self.recieve_event_queue.put_nowait(message)
except Exception as e:
logger.error(f"[NOSTRMARKET DEBUG] ❌ Failed to queue message: {e}")
def on_error(_, error): def on_error(_, error):
logger.warning(f"[NOSTRMARKET DEBUG] Websocket error: {error}") logger.warning(f"[NOSTRMARKET DEBUG] Websocket error: {error}")
def on_close(x, status_code, message): def on_close(x, status_code, message):
logger.warning(f"[NOSTRMARKET DEBUG] Websocket closed: {x}: '{status_code}' '{message}'") logger.warning(f"[NOSTRMARKET DEBUG] 🔌 Websocket closed: {x}: '{status_code}' '{message}'")
# force re-subscribe # force re-subscribe
self.recieve_event_queue.put_nowait(ValueError("Websocket close.")) self.recieve_event_queue.put_nowait(ValueError("Websocket close."))