Back to questions
Junior — Middle
71
Можете объяснить, что такое веб-сокеты и как они работают для установления двусторонней связи между клиентом и сервером?
Companies where asked
Профи-консалт
Answer from AI
sobes.tech AI
Веб-сокеты — это протокол, обеспечивающий двустороннюю (full-duplex) связь между клиентом и сервером поверх одного TCP-соединения.
Как это работает:
- Клиент инициирует HTTP-запрос с заголовком
Upgrade: websocketдля перехода на протокол WebSocket. - Сервер подтверждает переход, отвечая соответствующим заголовком.
- После успешного рукопожатия устанавливается постоянное соединение, по которому обе стороны могут в любой момент отправлять данные.
Это отличается от классического 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);