Junior — Middle
Կարող եք բացատրել, թե ինչ են վեբ-սոկետները և ինչպես են աշխատում երկկողմանի կապ հաստատելու համար հաճախորդի և սերվերի միջև:
sobes.tech AI
Պատասխան AI-ից
WebSocket-ները պրոտոկոլներ են, որոնք ապահովում են երկկողմանի (full-duplex) կապ հաճախորդի և սերվերի միջև մեկ TCP կապի վրա:
Ինչպես է աշխատում՝
- Հաճախորդը սկսում է HTTP հարցում
Upgrade: websocketգլխով՝ անցնելու WebSocket պրոտոկոլին: - Սերվերը հաստատում է անցումը պատասխանելով համապատասխան գլխով:
- Հաջող handshake-ից հետո ստեղծվում է մշտական կապ, որի միջոցով երկու կողմերն էլ կարող են ցանկացած ժամանակ տվյալներ ուղարկել:
Սա տարբերվում է սովորական HTTP-ից, որտեղ հաճախորդը ուղարկում է հարցում, սերվերը պատասխանում է, և կապը փակվում է: WebSocket-ները թույլ են տալիս սերվերին ուղարկել տվյալներ հաճախորդին առանց հարցման, ինչը օգտակար է չաթերի, խաղերի, ռեալ-թայմի և այլ ծրագրերի համար:
Օրինակ 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);