Senior
როგორ მუშაობს WebSocket კავშირი არქიტექტურაში — როდის იქმნება და ვინ ვისთან კომუნიკაციას ახორციელებს?
sobes.tech AI
პასუხი AI-სგან
WebSocket კავშირი დამყარებულია სპეციალური handshake-ის საშუალებით HTTP პროტოკოლზე:
- კლიენტი გამოგზავნის HTTP მოთხოვნას სათაურით
Upgrade: websocket, რათა გადაერთოს WebSocket პროტოკოლზე. - 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 უზრუნველყოფს ორმხრივ, მუდმივ კავშირს მომხმარებლის და სერვერის შორის.