Junior — Middle
Μπορείτε να εξηγήσετε τι είναι τα web sockets και πώς λειτουργούν για να καθιερώσουν μια διμερής επικοινωνία μεταξύ πελάτη και διακομιστή;
sobes.tech AI
Απάντηση από AI
Τα WebSockets είναι ένα πρωτόκολλο που παρέχει αμφίδρομη (full-duplex) επικοινωνία μεταξύ πελάτη και διακομιστή μέσω μιας μόνο σύνδεσης TCP.
Πώς λειτουργεί:
- Ο πελάτης ξεκινά ένα αίτημα HTTP με την κεφαλίδα
Upgrade: websocketγια να μεταβεί στο πρωτόκολλο WebSocket. - Ο διακομιστής επιβεβαιώνει τη μετάβαση απαντώντας με την κατάλληλη κεφαλίδα.
- Μετά το επιτυχές 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);