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:
- A kliens HTTP-kérést indít a
Upgrade: websocketfejlécel, hogy átálljon a WebSocket protokollra. - A szerver megerősíti az átállást a megfelelő fejléc válaszával.
- 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);