Adds websocket infos

upgrade
Laurent 3 weeks ago
parent 360fd647eb
commit 75fbe7d7a1
  1. 6
      LeStorage/StoreCenter.swift
  2. 15
      LeStorage/WebSocketManager.swift

@ -145,6 +145,12 @@ public class StoreCenter {
public var websocketFailure: Bool { public var websocketFailure: Bool {
return self._webSocketManager?.failure ?? true 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? { public var apiURL: String? {
return self._urlManager?.api return self._urlManager?.api

@ -19,6 +19,7 @@ class WebSocketManager: ObservableObject {
fileprivate var _reconnectAttempts = 0 fileprivate var _reconnectAttempts = 0
fileprivate var _failure = false fileprivate var _failure = false
fileprivate var _error: Error? = nil
fileprivate var _pingOk = false fileprivate var _pingOk = false
init(storeCenter: StoreCenter, urlString: String) { init(storeCenter: StoreCenter, urlString: String) {
@ -59,10 +60,12 @@ class WebSocketManager: ObservableObject {
switch result { switch result {
case .failure(let error): case .failure(let error):
self._failure = true self._failure = true
self._error = error
print("Error in receiving message: \(error)") print("Error in receiving message: \(error)")
self._handleWebSocketError(error) self._handleWebSocketError(error)
case .success(let message): case .success(let message):
self._failure = false self._failure = false
self._reconnectAttempts = 0
switch message { switch message {
case .string(let deviceId): case .string(let deviceId):
// print("device id = \(StoreCenter.main.deviceId()), origin id: \(deviceId)") // print("device id = \(StoreCenter.main.deviceId()), origin id: \(deviceId)")
@ -90,7 +93,7 @@ class WebSocketManager: ObservableObject {
private func _handleWebSocketError(_ error: Error) { private func _handleWebSocketError(_ error: Error) {
// print("WebSocket error: \(error)") // print("WebSocket error: \(error)")
// Exponential backoff for reconnection // up to 10 seconds of reconnection
let delay = min(Double(self._reconnectAttempts), 10.0) let delay = min(Double(self._reconnectAttempts), 10.0)
self._reconnectAttempts += 1 self._reconnectAttempts += 1
@ -131,7 +134,17 @@ class WebSocketManager: ObservableObject {
var pingStatus: Bool { var pingStatus: Bool {
return self._pingOk return self._pingOk
} }
var failure: Bool { var failure: Bool {
return self._failure return self._failure
} }
var error: Error? {
return self._error
}
var reconnectAttempts: Int {
return self._reconnectAttempts
}
} }

Loading…
Cancel
Save