Sobes.tech
Junior — Middle

Ar galite paaiškinti WebSocket protokolo veikimo principą ir kaip jis užtikrina nuolatinį ryšį tarp serverio ir kliento?

sobes.tech AI

Atsakymas iš AI

WebSocket yra protokolas, kuris užtikrina nuolatinį dvipusį ryšį tarp kliento ir serverio per TCP. Skirtingai nuo tradicinio HTTP, kur klientas inicijuoja užklausas, WebSocket leidžia serveriui siųsti duomenis klientui bet kuriuo metu.

Veikimo principas:

  1. Klientas inicijuoja HTTP užklausą su antrašte Upgrade: websocket, kad pereitų prie WebSocket protokolo.
  2. Serveris patvirtina perėjimą, ir nustatomas nuolatinis ryšys.
  3. Po ryšio nustatymo klientas ir serveris gali keistis žinutėmis realiu laiku be pakartotinių HTTP užklausų.

Tai leidžia kurti žemo vėlavimo programas, pavyzdžiui, pokalbių programas, žaidimus, finansinius terminalus.

WebSocket naudojimo pavyzdys iOS (Swift):

import Foundation

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

webSocketTask.resume()

// Siųsti žinutę
let message = URLSessionWebSocketTask.Message.string("Sveiki, serveri!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Klaida siųsdami: \(error)")
    }
}

// Gauti žinutes
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Klaida gaunant: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Gauta žinutė: \(text)")
            default:
                break
            }
            receive() // klausomės toliau
        }
    }
}

receive()

Taip WebSocket užtikrina efektyvų nuolatinį ryšį duomenų mainams realiu laiku.