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:
- Klient iniciuje HTTP požiadavku s hlavičkou
Upgrade: websocket, aby prešiel na WebSocket protokol. - Server potvrdí prechod odpoveďou s príslušnou hlavičkou.
- 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);