Sobes.tech
Back to questions
Junior — Middle
71

Можете объяснить, что такое веб-сокеты и как они работают для установления двусторонней связи между клиентом и сервером?

Companies where asked
Профи-консалт

Answer from AI

sobes.tech AI

Веб-сокеты — это протокол, обеспечивающий двустороннюю (full-duplex) связь между клиентом и сервером поверх одного TCP-соединения.

Как это работает:

  1. Клиент инициирует HTTP-запрос с заголовком Upgrade: websocket для перехода на протокол WebSocket.
  2. Сервер подтверждает переход, отвечая соответствующим заголовком.
  3. После успешного рукопожатия устанавливается постоянное соединение, по которому обе стороны могут в любой момент отправлять данные.

Это отличается от классического HTTP, где клиент отправляет запрос, а сервер отвечает, и соединение закрывается. Веб-сокеты позволяют серверу отправлять данные клиенту без запроса, что удобно для чатов, игр, реального времени и т.п.

Пример на 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);