Sobes.tech
Junior — Middle

Tətbiq minimallaşdırılmış vəziyyətdən geri qayıtdıqdan sonra WebSocket-in avtomatik yenidən qoşulmasını necə təmin etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-də tətbiq minimallaşdırıldıqdan sonra WebSocket bağlantısını avtomatik yenidən qurmaq üçün tətbiqin həyat dövrünü izləmək və aktiv vəziyyətə keçəndə bağlantını yenidən qurmaq lazımdır.

Əsasən, bu, UIApplication.didBecomeActiveNotification bildirişlərini izləməklə və ya tətbiq delegatında applicationDidBecomeActive metodunu həyata keçirməklə edilir. Bu zaman WebSocket-in vəziyyəti yoxlanılır və əgər əlaqə bağlanıbsa, yenidən qoşulma başlanır.

Swift-də URLSessionWebSocketTask istifadə edərək nümunə:

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 qəbul xətası: \(error)")
            case .success(let message):
                // Mesajı işləyin
                print("Qəbul edilən mesaj: \(message)")
                self?.listen() // davam etdin dinləməyə
            }
        }
    }

    deinit {
        NotificationCenter.default.removeObserver(self)
        webSocketTask?.cancel(with: .goingAway, reason: nil)
    }
}

Beləliklə, tətbiq aktiv vəziyyətə qayıtdıqda, vəziyyət yoxlanılır və lazım olsa, WebSocket yenidən qoşulur.