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 таъмин мекунад пайвастшавии муассир ва доимӣ барои мубодилаи маълумот дар вақти воқеӣ.