Sobes.tech
Junior — Middle

Можете ли објаснити принцип функционисања протокола WebSocket и како он обезбеђује сталну везу између сервера и клијента?

sobes.tech АИ

Одговор од АИ

WebSocket je protokol koji obezbeđuje trajnu dvostranu vezu između klijenta i servera preko TCP-a. Za razliku od klasičnog HTTP-a, gde klijent inicira zahteve, WebSocket omogućava serveru da šalje podatke klijentu u bilo kom trenutku.

Princip rada:

  1. Klijent inicira HTTP zahtev sa zaglavljem Upgrade: websocket za prelazak na WebSocket protokol.
  2. Server potvrđuje prelaz i uspostavlja se trajna veza.
  3. Nakon uspostavljanja veze, klijent i server mogu razmenjivati poruke u realnom vremenu bez potrebe za ponovnim HTTP zahtevima.

Ovo omogućava kreiranje aplikacija sa niskom latencijom, poput čatova, igara, finansijskih terminala.

Primer korišćenja WebSocket-a u iOS (Swift):

import Foundation

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

webSocketTask.resume()

// Slanje poruke
let message = URLSessionWebSocketTask.Message.string("Zdravo server!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Greška pri slanju: \(error)")
    }
}

// Primanje poruka
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Greška pri prijemu: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Primljena poruka: \(text)")
            default:
                break
            }
            receive() // nastavak slušanja
        }
    }
}

receive()

Na ovaj način, WebSocket obezbeđuje efikasno i trajno povezivanje za razmenu podataka u realnom vremenu.