     }
 
     func disconnectSocketsAndResetState() {
+        stopAllTimers()
+
+        [watchSocket, messageSocket].forEach {
+            $0?.onEvent = nil
+            $0?.disconnect()
+        }
+        watchSocket = nil
+        messageSocket = nil
+
+        live = nil
+    }
+
+    func startAllTimers() {
+        startWatchSocketKeepSeatTimer(interval: watchSocketKeepSeatInterval)
+        startMessageSocketEmptyMessageTimer(interval: messageSocketEmptyMessageInterval)
+        startLastPongCheckTimer()
+        log.debug("Started all timers.")
+    }
+
+    func stopAllTimers() {
         stopWatchSocketKeepSeatTimer()
         stopMessageSocketEmptyMessageTimer()
         stopLastPongCheckTimer()
-        stopLastTextCheckTimer()
-        [watchSocket, messageSocket].forEach {
-            $0?.onEvent = nil
-            $0?.disconnect()
-        }
-        watchSocket = nil
-        messageSocket = nil
-
-        live = nil
+        clearTextSocketEventCheckTimer()
+        log.debug("Stopped all timers.")
     }
 }
 

    private var shouldClearUserSessionCookie = true

    // Timers for WebSockets
    private var watchSocketKeepSeatTimer: Timer?
    private var messageSocketEmptyMessageTimer: Timer?


        socket.write(string: message)
    }

    func processMessageSocketTextEvent(text: String) {
        guard let data = text.data(using: .utf8) else { return }
        let decoder = JSONDecoder()
        decoder.keyDecodingStrategy = .convertFromSnakeCase
