Sobes.tech
Senior

Πώς λειτουργεί η σύνδεση WebSocket στην αρχιτεκτονική — πότε εγκαθίσταται και ποιος επικοινωνεί με ποιον;

sobes.tech AI

Απάντηση από AI

Η σύνδεση WebSocket καθιερώνεται μέσω ενός ειδικού χειραψίας πάνω από το πρωτόκολλο 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 παρέχει μια διπλής κατεύθυνσης, διαρκή σύνδεση μεταξύ πελάτη και διακομιστή.