Использование WebSockets, обеспечивающих двустороннюю связь и обмен данными между клиентом и сервером, становится все более распространенным явлением для онлайн-приложений.

Microsoft упростила для разработчиков включение WebSockets в свои приложения, включив для этого мощную и адаптируемую инфраструктуру в ASP.NET Core.

WebSocket API — это стандартизированный протокол для связи в режиме реального времени через Интернет, и WebSockets в ASP.NET Core построены на его основе. Благодаря этому протоколу возможна полнодуплексная связь, поэтому ни клиенту, ни серверу не нужно ждать запроса или ответа перед отправкой или получением данных.

ПО промежуточного слоя WebSocket должно быть сначала включено в исходном коде вашего приложения, прежде чем вы сможете использовать WebSockets в приложении ASP.NET Core. Использование функции UseWebSockets в объекте IApplicationBuilder вашей программы позволит выполнить следующее:

Указав конечную точку WebSocket в конфигурации маршрутизации вашего приложения после настройки промежуточного программного обеспечения, вы сможете обрабатывать запросы WebSocket. Для этого используется метод MapWebSocketRoute, который принимает шаблон URL и делегат, который будет вызываться для управления входящими соединениями WebSocket:

Вы можете настроить обработчики событий для обработки входящих сообщений и ошибок, а также выполнить любую необходимую инициализацию внутри делегата обработчика WebSocket. Например, для обработки входящих сообщений от клиента вы можете зарегистрировать обработчик событий OnMessage:

На этом рисунке обработчик OnMessage настроен для обработки входящих сообщений. После получения сообщение преобразуется в строку и возвращается клиенту вместе с дополнительным текстом. Возвращаемые сообщения клиенту отправляются с помощью функции SendAsync.

Пример использования

  1. Базовый обработчик WebSocket

В этом примере определяется базовый обработчик WebSocket, который получает и передает сообщения клиенту. Входящие сообщения от клиента принимаются с помощью метода ReceiveAsync, а исходящие сообщения отправляются клиенту с помощью функции SendAsync.

2. Рассылка сообщений всем подключенным клиентам

На этом рисунке мы определяем обработчик WebSocket, который управляет группой подключенных клиентов и рассылает сообщения каждому подключенному клиенту. Когда клиент подключается, вызывается метод OnConnected; аналогичным образом метод OnDisconnected вызывается, когда клиент отключается. Всем подключенным клиентам отправляются сообщения с помощью функции SendMessageAsync.

3. Интеграция с SignalR

В этом примере мы определяем концентратор SignalR, который обрабатывает входящие сообщения от клиентов и рассылает их всем связанным клиентам. Клиенты используют метод SendMessage для отправки сообщений на сервер, а сервер использует метод ReceiveMessage для ретрансляции сообщений всем подключенным клиентам.

Чтобы использовать этот концентратор, мы должны добавить его в промежуточное ПО SignalR в нашем коде запуска:

ASP.NET Core поддерживает WebSockets различными способами, от простых обработчиков до более сложных методов, таких как интеграция с SignalR. Благодаря надежной и адаптируемой платформе Microsoft разработчики могут легко интегрировать общение в реальном времени в свои онлайн-приложения.

Связь в реальном времени можно легко добавить в ваши веб-приложения с помощью WebSockets в ASP.NET Core. Обновления в режиме реального времени и обмен данными возможны с помощью всего нескольких строк кода, чтобы обеспечить полнодуплексную связь между клиентом и сервером. WebSockets в ASP.NET Core — это фантастический инструмент, который должен быть в вашем арсенале, если вы создаете любую форму веб-приложения в реальном времени, включая чат, информационные панели в реальном времени и другие типы.

Эта статья содержит части, созданные с помощью ИИ (OpenAI ChatGPT).