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