Sobes.tech
Junior — Middle

Czy możesz wyjaśnić zasadę działania protokołu WebSocket i jak zapewnia on stałe połączenie między serwerem a klientem?

sobes.tech AI

Odpowiedź od AI

WebSocket to protokół, który zapewnia trwałe dwukierunkowe połączenie między klientem a serwerem przez TCP. W przeciwieństwie do klasycznego HTTP, gdzie klient inicjuje żądania, WebSocket pozwala serwerowi na wysyłanie danych do klienta w dowolnym momencie.

Zasada działania:

  1. Klient inicjuje żądanie HTTP z nagłówkiem Upgrade: websocket, aby przejść na protokół WebSocket.
  2. Serwer potwierdza przejście i ustanawia trwałe połączenie.
  3. Po nawiązaniu połączenia, klient i serwer mogą wymieniać wiadomości w czasie rzeczywistym bez konieczności powtarzania żądań HTTP.

Pozwala to na tworzenie aplikacji o niskim opóźnieniu, takich jak czaty, gry, terminale finansowe.

Przykład użycia WebSocket w iOS (Swift):

import Foundation

let url = URL(string: "wss://example.com/socket")!
let webSocketTask = URLSession.shared.webSocketTask(with: url)

webSocketTask.resume()

// Wysyłanie wiadomości
let message = URLSessionWebSocketTask.Message.string("Cześć serwer!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Błąd wysyłania: \(error)")
    }
}

// Odbieranie wiadomości
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Błąd odbioru: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Odebrano wiadomość: \(text)")
            default:
                break
            }
            receive() // kontynuuj słuchanie
        }
    }
}

receive()

W ten sposób, WebSocket zapewnia efektywne i trwałe połączenie do wymiany danych w czasie rzeczywistym.