Τι είναι το WebSocket;
sobes.tech AI
Απάντηση από AI
Πρωτόκολλο επιπέδου εφαρμογής που παρέχει ένα κανάλι επικοινωνίας διπλής κατεύθυνσης και πλήρους διπλωματίας μέσω μιας μόνο σύνδεσης TCP. Χρησιμοποιείται για εφαρμογές σε πραγματικό χρόνο: συνομιλίες, διαδικτυακά παιχνίδια, πλατφόρμες εμπορίου.
Διαφορές με το HTTP:
- HTTP: ο πελάτης στέλνει ένα αίτημα, ο διακομιστής απαντά (μονοκατευθυντικό). Εγκαθιστά μια νέα σύνδεση για κάθε αίτημα ή την επαναχρησιμοποιεί μέσω Keep-Alive.
- WebSocket: μετά την εγκατάσταση της σύνδεσης, ο πελάτης και ο διακομιστής μπορούν να στέλνουν δεδομένα οποιαδήποτε στιγμή χωρίς να επανασυνδέονται (διπλής κατεύθυνσης).
Εγκατάσταση σύνδεσης:
Χρησιμοποιεί HTTP για το αρχικό "handshake". Ο πελάτης στέλνει ένα αίτημα HTTP με τις κεφαλίδες Upgrade: websocket και Connection: Upgrade. Ο διακομιστής απαντά με μια απάντηση HTTP με κατάσταση 101 Switching Protocols.
Πλαίσια δεδομένων:
Η μετάδοση δεδομένων γίνεται με τη μορφή πλαισίων, που επιτρέπει τη μετάδοση διαφορετικών τύπων δεδομένων (κείμενο, δυαδικά δεδομένα).
Παράδειγμα εγκατάστασης σύνδεσης (σχηματικά):
Πελάτης -> Διακομιστής (Αίτημα αναβάθμισης)
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Διακομιστής -> Πελάτης (Απάντηση αναβάθμισης)
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZgYesItU=
Μετά από αυτό, ξεκινά η ανταλλαγή πλαισίων WebSocket.
Πλεονεκτήματα:
- Χαμηλή καθυστέρηση.
- Μείωση φόρτου στον διακομιστή (δεν χρειάζεται συνεχές polling).
- Δυνατότητα μετάδοσης δεδομένων σε πραγματικό χρόνο.
Μειονεκτήματα:
- Απαιτεί υποστήριξη τόσο από τον πελάτη όσο και από τον διακομιστή.
- Πιο πολύπλοκη υλοποίηση σε σύγκριση με μια απλή αίτηση HTTP.
Στη Java, συχνά χρησιμοποιούνται βιβλιοθήκες για WebSocket:
- Java API for WebSocket (JSR 356).
- Spring WebSocket.
- Netty.