Junior — Middle
Можете ли да обясните принципа на работа на протокола WebSocket и как той осигурява постоянно свързване между сървъра и клиента?
sobes.tech AI
Отговор от AI
WebSocket е протокол, който осигурява постоянно двупосочно свързване между клиента и сървъра върху TCP. За разлика от класическия HTTP, където клиентът инициира заявките, WebSocket позволява на сървъра да изпраща данни към клиента по всяко време.
Принцип на работа:
- Клиентът започва HTTP заявка с хедър
Upgrade: websocket, за да премине към протокола WebSocket. - Сървърът потвърждава прехода и се установява постоянно свързване.
- След установяване на връзката, клиентът и сървърът могат да обменят съобщения в реално време без необходимост от повторни 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 осигурява ефективна и постоянна връзка за обмен на данни в реално време.