Sobes.tech
Junior — Middle

Tudná magyarázni, hogy mik azok a web socketek, és hogyan működnek a kliens és a szerver közötti kétirányú kommunikáció kialakításához?

sobes.tech MI

Válasz az MI-től

A WebSocket egy protokoll, amely lehetővé teszi a kétirányú (full-duplex) kommunikációt a kliens és a szerver között egyetlen TCP-kapcsolaton keresztül.

Hogyan működik:

  1. A kliens HTTP-kérést indít a Upgrade: websocket fejlécel, hogy átálljon a WebSocket protokollra.
  2. A szerver megerősíti az átállást a megfelelő fejléc válaszával.
  3. Sikeres kézfogás után egy állandó kapcsolat jön létre, amelyen keresztül mindkét fél bármikor adatokat küldhet.

Ez eltér a klasszikus HTTP-től, ahol a kliens kérvényt küld, a szerver válaszol, és a kapcsolat lezárul. A WebSocket lehetővé teszi, hogy a szerver kérés nélkül küldjön adatokat a kliensnek, ami hasznos chat, játék, valós idejű alkalmazások esetén.

Példa C#-ban a System.Net.WebSockets használatával:

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

// Üzenet küldése és fogadása WebSocketen keresztül például
ClientWebSocket ws = new ClientWebSocket();
await ws.ConnectAsync(new Uri("wss://example.com/socket"), CancellationToken.None);

// Üzenet küldése
string message = "Hello";
byte[] bytes = Encoding.UTF8.GetBytes(message);
await ws.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);

// Üzenet fogadása
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);