Wie kann die automatische Wiederverbindung des WebSocket nach der Rückkehr der Anwendung aus dem minimierten Zustand sichergestellt werden?
sobes.tech KI
Antwort von AI
Um WebSocket nach der Rückkehr der Anwendung aus einem minimierten Zustand auf iOS automatisch wiederherzustellen, erfordert die Überwachung des Lebenszyklus der Anwendung und die Wiederherstellung der Verbindung beim Übergang in einen aktiven Zustand.
Dies geschieht in der Regel durch Beobachtung der Benachrichtigungen UIApplication.didBecomeActiveNotification oder durch Implementierung der Methode applicationDidBecomeActive im App-Delegate. Zu diesem Zeitpunkt wird der Zustand des WebSocket überprüft und, falls die Verbindung geschlossen ist, eine erneute Verbindung initiiert.
Beispiel in Swift mit 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("WebSocket Fehler beim Empfang: \(error)")
case .success(let message):
// Nachricht verarbeiten
print("Empfangene Nachricht: \(message)")
self?.listen() // weiter zuhören
}
}
}
deinit {
NotificationCenter.default.removeObserver(self)
webSocketTask?.cancel(with: .goingAway, reason: nil)
}
}
Auf diese Weise wird bei jedem Rückkehr der Anwendung in den aktiven Zustand die Verbindung überprüft und bei Bedarf wiederhergestellt.