Sobes.tech
Junior — Middle

Môžete vysvetliť, čo sú webové sokety a ako fungujú na vytvorenie obojsmernej komunikácie medzi klientom a serverom?

sobes.tech AI

Odpoveď od AI

WebSockety sú protokol, ktorý zabezpečuje obojsmernú (full-duplex) komunikáciu medzi klientom a serverom cez jedno TCP spojenie.

Ako to funguje:

  1. Klient iniciuje HTTP požiadavku s hlavičkou Upgrade: websocket, aby prešiel na WebSocket protokol.
  2. Server potvrdí prechod odpoveďou s príslušnou hlavičkou.
  3. Po úspešnom handshake sa vytvorí trvalé spojenie, cez ktoré môžu obe strany kedykoľvek posielať dáta.

Toto sa líši od klasického HTTP, kde klient odošle požiadavku a server odpovie, a spojenie sa zatvorí. WebSockety umožňujú serveru posielať dáta klientovi bez požiadavky, čo je užitočné pre chaty, hry, real-time aplikácie a pod.

Príklad v C# s System.Net.WebSockets:

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

// Príklad odoslania a prijatia správ cez WebSocket
ClientWebSocket ws = new ClientWebSocket();
await ws.ConnectAsync(new Uri("wss://example.com/socket"), CancellationToken.None);

// Odoslanie správy
string message = "Hello";
byte[] bytes = Encoding.UTF8.GetBytes(message);
await ws.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);

// Prijatie správy
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);