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-ը ապահովում է արդյունավետ և մշտական կապ՝ տվյալների փոխանակման համար իրական ժամանակում։