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 უზრუნველყოფს ორმხრივ, მუდმივ კავშირს მომხმარებლის და სერვერის შორის.