Sobes.tech
Junior

Τι είναι το 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.