Junior — Middle
Uygulama minimize durumundan geri döndükten sonra WebSocket'in otomatik yeniden bağlanmasını nasıl sağlayabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
iOS'ta uygulama simge durumundan geri döndüğünde WebSocket bağlantısını otomatik olarak yeniden kurmak için uygulamanın yaşam döngüsünü izlemek ve aktif duruma geçerken bağlantıyı yeniden kurmak gerekir.
Genellikle bu, UIApplication.didBecomeActiveNotification bildirimlerini gözlemleyerek veya uygulama delegesinde applicationDidBecomeActive yöntemini uygulayarak yapılır. Bu noktada, WebSocket durumu kontrol edilir ve bağlantı kapalıysa yeniden bağlanma başlatılır.
Swift'te URLSessionWebSocketTask kullanarak örnek:
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 alınan hata: \(error)")
case .success(let message):
// Mesajı işle
print("Alınan mesaj: \(message)")
self?.listen() // dinlemeye devam et
}
}
}
deinit {
NotificationCenter.default.removeObserver(self)
webSocketTask?.cancel(with: .goingAway, reason: nil)
}
}
Bu şekilde, uygulama aktif duruma döndüğünde, bağlantı kontrol edilir ve gerekirse WebSocket yeniden bağlanır.