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