Junior — Middle
Cum se asigură reconectarea automată a WebSocket după revenirea aplicației din starea minimizată?
sobes.tech AI
Răspuns de la AI
Pentru a restabili automat conexiunea WebSocket după revenirea aplicației din starea minimizată pe iOS, trebuie să monitorizați ciclul de viață al aplicației și să restabiliți conexiunea atunci când treceți în starea activă.
De obicei, acest lucru se face prin observarea notificărilor UIApplication.didBecomeActiveNotification sau implementarea metodei applicationDidBecomeActive în delegatul aplicației. În acel moment, se verifică starea WebSocket-ului și, dacă conexiunea este închisă, se inițiază reconectarea.
Exemplu în Swift folosind URLSessionWebSocketTask:
import UIKit
class WebSocketManager {
private var webSocketTask: URLSessionWebSocketTask?
private let urlSession = URLSession(configuration: .default)
private let url = URL(string: "wss://example.com/socket")!
init() {
NotificationCenter.default.addObserver(self, selector: #selector(appDidBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)
connect()
}
func connect() {
webSocketTask = urlSession.webSocketTask(with: url)
webSocketTask?.resume()
listen()
}
@objc private func appDidBecomeActive() {
if webSocketTask?.state != .running {
connect()
}
}
private func listen() {
webSocketTask?.receive { [weak self] result in
switch result {
case .failure(let error):
print("Eroare la primirea WebSocket: \(error)")
case .success(let message):
// Procesare mesaj
print("Mesaj primit: \(message)")
self?.listen() // ascultă în continuare
}
}
}
deinit {
NotificationCenter.default.removeObserver(self)
webSocketTask?.cancel(with: .goingAway, reason: nil)
}
}
Astfel, de fiecare dată când aplicația revine în starea activă, se verifică și, dacă este necesar, se reconectează WebSocket-ul.