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:
- Klient inicjuje żądanie HTTP z nagłówkiem
Upgrade: websocket, aby przejść na protokół WebSocket. - Serwer potwierdza przejście i ustanawia trwałe połączenie.
- 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.