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:
- Klientas inicijuoja HTTP užklausą su antrašte
Upgrade: websocket, kad pereitų prie WebSocket protokolo. - Serveris patvirtina perėjimą, ir nustatomas nuolatinis ryšys.
- 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.