Sobes.tech
Junior — Middle

Kas saaksite selgitada WebSocket protokola tööpõhimõtet ja kuidas see tagab pideva ühenduse serveri ja kliendi vahel?

sobes.tech AI

Vastus AI-lt

WebSocket on protokoll, mis tagab püsiva kahe kahe vahel kliendi ja serveri vahel TCP üle. Erinevalt klassikalisest HTTP-st, kus klient algatab päringud, võimaldab WebSocket serveril saata andmeid kliendile igal ajal.

Tööpõhimõte:

  1. Klient algatab HTTP-päringu päisega Upgrade: websocket, et üle minna WebSocket protokollile.
  2. Server kinnitab ülemineku ja luuakse püsiv ühendus.
  3. Pärast ühenduse loomist saavad klient ja server vahetada sõnumeid reaalajas ilma korduvate HTTP-päringuteta.

See võimaldab luua madala latentsusega rakendusi, näiteks vestlusi, mänge, finantsterminale.

WebSocketi kasutamise näide iOS-is (Swift):

import Foundation

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

webSocketTask.resume()

// Sõnumi saatmine
let message = URLSessionWebSocketTask.Message.string("Tere, server!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Saatmise viga: \(error)")
    }
}

// Sõnumite vastuvõtt
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Vastuvõtu viga: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Saadud sõnum: \(text)")
            default:
                break
            }
            receive() // kuulame edasi
        }
    }
}

receive()

Seega tagab WebSocket tõhusa püsiva ühenduse andmevahetuseks reaalajas.