Sobes.tech
Junior — Middle

Puteți explica principiul de funcționare al protocolului WebSocket și modul în care asigură o conexiune constantă între server și client?

sobes.tech AI

Răspuns de la AI

WebSocket este un protocol care asigură o conexiune bidirecțională persistentă între client și server pe TCP. Spre deosebire de HTTP-ul clasic, unde clientul inițiază solicitările, WebSocket permite serverului să trimită date către client în orice moment.

Principiul de funcționare:

  1. Clientul inițiază o solicitare HTTP cu antetul Upgrade: websocket pentru a trece la protocolul WebSocket.
  2. Serverul confirmă trecerea și se stabilește o conexiune persistentă.
  3. După stabilirea conexiunii, clientul și serverul pot schimba mesaje în timp real fără a fi nevoie de solicitări HTTP repetate.

Acest lucru permite crearea de aplicații cu latență scăzută, precum chat-uri, jocuri, terminale financiare.

Exemplu de utilizare WebSocket în iOS (Swift):

import Foundation

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

webSocketTask.resume()

// Trimiterea unui mesaj
let message = URLSessionWebSocketTask.Message.string("Salut server!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Eroare la trimitere: \(error)")
    }
}

// Primirea mesajelor
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Eroare la primire: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Mesaj primit: \(text)")
            default:
                break
            }
            receive() // ascultare continuă
        }
    }
}

receive()

Astfel, WebSocket asigură o conexiune eficientă și persistentă pentru schimbul de date în timp real.