diff --git a/LeStorage/WebSocketManager.swift b/LeStorage/WebSocketManager.swift index 219d4d6..98d3ecc 100644 --- a/LeStorage/WebSocketManager.swift +++ b/LeStorage/WebSocketManager.swift @@ -14,20 +14,22 @@ class WebSocketManager: ObservableObject { private var webSocketTask: URLSessionWebSocketTask? // @Published var messages: [String] = [] private var timer: Timer? + fileprivate var _url: String @Published var status: String = "status" init(urlString: String) { - setupWebSocket(urlString: urlString) + self._url = urlString + _setupWebSocket() } deinit { disconnect() } - private func setupWebSocket(urlString: String) { + private func _setupWebSocket() { // guard let url = URL(string: "ws://127.0.0.1:8000/ws/user/test/") else { - guard let url = URL(string: urlString) else { + guard let url = URL(string: self._url) else { print("Invalid URL") return } @@ -39,6 +41,7 @@ class WebSocketManager: ObservableObject { receiveMessage() // Setup a ping timer to keep the connection alive + self.timer?.invalidate() timer = Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { _ in self.ping() } @@ -51,7 +54,7 @@ class WebSocketManager: ObservableObject { self.changeStatus(error.localizedDescription) print("Error in receiving message: \(error)") - self.webSocketTask?.resume() + self._setupWebSocket() case .success(let message): switch message { case .string(let text): @@ -99,6 +102,7 @@ class WebSocketManager: ObservableObject { if let error = error { print("Error in sending ping: \(error)") self.changeStatus("ping failed: \(error.localizedDescription)") + self._setupWebSocket() } } }