Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι είναι τα web sockets και πώς λειτουργούν για να καθιερώσουν μια διμερής επικοινωνία μεταξύ πελάτη και διακομιστή;

sobes.tech AI

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

Τα WebSockets είναι ένα πρωτόκολλο που παρέχει αμφίδρομη (full-duplex) επικοινωνία μεταξύ πελάτη και διακομιστή μέσω μιας μόνο σύνδεσης TCP.

Πώς λειτουργεί:

  1. Ο πελάτης ξεκινά ένα αίτημα HTTP με την κεφαλίδα Upgrade: websocket για να μεταβεί στο πρωτόκολλο WebSocket.
  2. Ο διακομιστής επιβεβαιώνει τη μετάβαση απαντώντας με την κατάλληλη κεφαλίδα.
  3. Μετά το επιτυχές handshake, δημιουργείται μια διαρκής σύνδεση, μέσω της οποίας και τα δύο μέρη μπορούν να στέλνουν δεδομένα οποιαδήποτε στιγμή.

Αυτό διαφέρει από το κλασικό HTTP, όπου ο πελάτης στέλνει ένα αίτημα και ο διακομιστής απαντά, και η σύνδεση κλείνει. Τα WebSockets επιτρέπουν στον διακομιστή να στέλνει δεδομένα στον πελάτη χωρίς αίτημα, κάτι που είναι χρήσιμο για chat, παιχνίδια, πραγματικό χρόνο κ.λπ.

Παράδειγμα σε C# με System.Net.WebSockets:

using System.Net.WebSockets;
using System.Threading;
using System.Text;

// Παράδειγμα αποστολής και λήψης μηνυμάτων μέσω WebSocket
ClientWebSocket ws = new ClientWebSocket();
await ws.ConnectAsync(new Uri("wss://example.com/socket"), CancellationToken.None);

// Αποστολή μηνύματος
string message = "Hello";
byte[] bytes = Encoding.UTF8.GetBytes(message);
await ws.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);

// Λήψη μηνύματος
var buffer = new byte[1024];
var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
string received = Encoding.UTF8.GetString(buffer, 0, result.Count);