Sobes.tech
Senior

Ինչպես է աշխատում WebSocket կապը ճարտարապետությունում — երբ է այն հաստատվում և ով ովի հետ շփվում է?

sobes.tech AI

Պատասխան AI-ից

WebSocket կապը հաստատվում է հատուկ handshake-ով HTTP պրոտոկոլի վրա.

  1. Միջնորդը ուղարկում է HTTP հարցում Upgrade: websocket գլխով, որպեսզի անցնի WebSocket պրոտոկոլին:
  2. WebSocket-ին աջակցող սերվերը պատասխանում է հաստատմամբ և անցնում երկկողմանի կապի:

Հետագա հաստատումից հետո՝

  • Միջնորդը և սերվերը պահպանում են մշտական TCP կապ:
  • Երկու կողմերն էլ կարող են ցանկացած ժամանակ ուղարկել հաղորդագրություններ՝ առանց կապը նորից հաստատելու:

Այս կառուցվածքում դա թույլ է տալիս իրական ժամանակի հաղորդակցություն իրականացնել, օրինակ՝ չատ կամ տվյալների իրական ժամանակի թարմացումներ:

Օրինակ՝ Go լեզվով՝ օգտագործելով gorilla/websocket փաթեթը՝

var upgrader = websocket.Upgrader{}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("բարձրացման սխալ:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Հաղորդագրության մշակումը
        conn.WriteMessage(websocket.TextMessage, msg) // էկո
    }
}

Այսպիսով՝ WebSocket-ը ապահովում է երկկողմանի, մշտական կապ հաճախորդի և սերվերի միջև։