From 75fbe7d7a177b224af5157b8c5b2f020706bf045 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 17 Oct 2025 09:52:55 +0200 Subject: [PATCH] Adds websocket infos --- LeStorage/StoreCenter.swift | 6 ++++++ LeStorage/WebSocketManager.swift | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/LeStorage/StoreCenter.swift b/LeStorage/StoreCenter.swift index 7d0c082..439297c 100644 --- a/LeStorage/StoreCenter.swift +++ b/LeStorage/StoreCenter.swift @@ -145,6 +145,12 @@ public class StoreCenter { public var websocketFailure: Bool { return self._webSocketManager?.failure ?? true } + public var websocketError: Error? { + return self._webSocketManager?.error + } + public var websocketReconnectAttempts: Int { + return self._webSocketManager?.reconnectAttempts ?? 0 + } public var apiURL: String? { return self._urlManager?.api diff --git a/LeStorage/WebSocketManager.swift b/LeStorage/WebSocketManager.swift index b64b643..b5c4f14 100644 --- a/LeStorage/WebSocketManager.swift +++ b/LeStorage/WebSocketManager.swift @@ -19,6 +19,7 @@ class WebSocketManager: ObservableObject { fileprivate var _reconnectAttempts = 0 fileprivate var _failure = false + fileprivate var _error: Error? = nil fileprivate var _pingOk = false init(storeCenter: StoreCenter, urlString: String) { @@ -59,10 +60,12 @@ class WebSocketManager: ObservableObject { switch result { case .failure(let error): self._failure = true + self._error = error print("Error in receiving message: \(error)") self._handleWebSocketError(error) case .success(let message): self._failure = false + self._reconnectAttempts = 0 switch message { case .string(let deviceId): // print("device id = \(StoreCenter.main.deviceId()), origin id: \(deviceId)") @@ -90,7 +93,7 @@ class WebSocketManager: ObservableObject { private func _handleWebSocketError(_ error: Error) { // print("WebSocket error: \(error)") - // Exponential backoff for reconnection + // up to 10 seconds of reconnection let delay = min(Double(self._reconnectAttempts), 10.0) self._reconnectAttempts += 1 @@ -131,7 +134,17 @@ class WebSocketManager: ObservableObject { var pingStatus: Bool { return self._pingOk } + var failure: Bool { return self._failure } + + var error: Error? { + return self._error + } + + var reconnectAttempts: Int { + return self._reconnectAttempts + } + }