Sobes.tech
Junior — Middle

Можете ли да обясните принципа на работа на протокола WebSocket и как той осигурява постоянно свързване между сървъра и клиента?

sobes.tech AI

Отговор от AI

WebSocket е протокол, който осигурява постоянно двупосочно свързване между клиента и сървъра върху TCP. За разлика от класическия HTTP, където клиентът инициира заявките, WebSocket позволява на сървъра да изпраща данни към клиента по всяко време.

Принцип на работа:

  1. Клиентът започва HTTP заявка с хедър Upgrade: websocket, за да премине към протокола WebSocket.
  2. Сървърът потвърждава прехода и се установява постоянно свързване.
  3. След установяване на връзката, клиентът и сървърът могат да обменят съобщения в реално време без необходимост от повторни HTTP заявки.

Това позволява създаването на приложения с ниска латентност, като чатове, игри, финансови терминали.

Пример за използване на WebSocket в iOS (Swift):

import Foundation

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

webSocketTask.resume()

// Изпращане на съобщение
let message = URLSessionWebSocketTask.Message.string("Здравей, сървър!")
webSocketTask.send(message) { error in
    if let error = error {
        print("Грешка при изпращане: \(error)")
    }
}

// Получаване на съобщения
func receive() {
    webSocketTask.receive { result in
        switch result {
        case .failure(let error):
            print("Грешка при получаване: \(error)")
        case .success(let message):
            switch message {
            case .string(let text):
                print("Получено съобщение: \(text)")
            default:
                break
            }
            receive() // продължаване на слушането
        }
    }
}

receive()

Така WebSocket осигурява ефективна и постоянна връзка за обмен на данни в реално време.