Sobes.tech
Back to questions
Junior — Middle
59

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

Answer from AI

sobes.tech AI

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

В отличие от классического HTTP, где клиент отправляет запрос и ждёт ответа, WebSocket позволяет серверу и клиенту обмениваться сообщениями в любое время без необходимости повторного установления соединения.

Это особенно полезно для приложений с обменом данными в реальном времени, например:

  • Чаты
  • Онлайн-игры
  • Финансовые торговые платформы

Пример использования в C# с библиотекой System.Net.WebSockets:

using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        ClientWebSocket ws = new ClientWebSocket();
        await ws.ConnectAsync(new Uri("wss://example.com/socket"), CancellationToken.None);

        string message = "Hello, WebSocket!";
        var 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);
        Console.WriteLine("Received: " + Encoding.UTF8.GetString(buffer, 0, result.Count));

        await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
    }
}

Таким образом, WebSocket позволяет создавать интерактивные приложения с минимальной задержкой обмена данными.