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