Поделиться через


Azure Front Door WebSocket (предварительная версия)

Azure Front Door поддерживает WebSocket на уровнях "Стандартный" и "Премиум", не требуя дополнительных конфигураций. WebSocket, стандартизированный в RFC6455, — это протокол на основе TCP, который упрощает полно дуплексное взаимодействие между сервером и клиентом через длительное tcp-подключение. Это устраняет необходимость опроса по мере необходимости в HTTP и позволяет избежать некоторых затрат на HTTP. Он может повторно использовать одно и то же TCP-подключение для нескольких запросов или ответов, что приводит к более эффективному использованию ресурсов. Это обеспечивает более интерактивные и интерактивные сценарии в режиме реального времени.

Внимание

Azure Front Door websocket в настоящее время находится в предварительной версии. Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

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

Использование WebSocket в Azure Front Door

При использовании WebSocket в Azure Front Door следует учитывать следующее:

  • После обновления подключения до WebSocket Azure Front Door передает данные между клиентами и сервером-источником без каких-либо проверок или манипуляций во время установленного подключения.
  • Брандмауэр веб-приложений (WAF) проверки применяются на этапе создания WebSocket. После установки подключения WAF не выполняет дальнейшие проверки.
  • Проверки работоспособности для источников выполняются с помощью протокола HTTP.
  • Отключите кэширование для маршрутов WebSocket. Для маршрутов с включенным кэшированием Azure Front Door не перенаправляет заголовок обновления WebSocket в источник и обрабатывает его как HTTP-запрос, игнорируя правила кэша. Это приводит к сбою запроса на обновление WebSocket.
  • Время ожидания простоя — 5 минут. Если Azure Front Door не обнаруживает передачу данных из источника или клиента за последние 5 минут, подключение считается неактивным и закрывается.
  • В настоящее время подключения WebSocket в Azure Front Door остаются открытыми не более 4 часов. Подключение WebSocket можно удалить из-за обновлений базового сервера или других действий по обслуживанию. Мы настоятельно рекомендуем реализовать логику повторных попыток в приложении.

Как работает протокол WebSocket

Протоколы WebSocket используют порт 80 для стандартных подключений WebSocket и порта 443 для подключений WebSocket по протоколу TLS/SSL. В качестве протокола с отслеживанием состояния подключение между клиентами и сервером остается активным, пока не завершится любой стороной. Подключения WebSocket начинаются с запроса на обновление HTTP с ws: помощью схемы или wss: схемы. Эти подключения устанавливаются путем обновления HTTP-запроса/ответа с помощью Connection: Upgradeзаголовков и Sec-WebSocket-KeySec-WebSocket-Version заголовковUpgrade: websocket, как показано в примерах заголовков запроса.

Подтверждение от клиента выглядит следующим образом:

    GET /chat HTTP/1.1
    Host: server.example.com
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Origin: http://example.com
    Sec-WebSocket-Protocol: chat, superchat
    Sec-WebSocket-Version: 13

Сервер отвечает с 101 Switching Protocols кодом состояния, чтобы указать, что он переключается на протокол WebSocket, как запрашивается клиентом. Ответ содержит Connection: Upgrade заголовки и Upgrade: websocket заголовки, подтверждающие переключатель протокола. Заголовок Sec-WebSocket-Accept возвращается для проверки успешности обновления подключения.

Подтверждение с сервера выглядит следующим образом:

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
    Sec-WebSocket-Protocol: chat

После того как клиент получит ответ сервера, подключение WebSocket открыто для начала передачи данных. Если подключение WebSocket отключается клиентом или сервером или сбоем в сети, клиентское приложение, как ожидается, переинициирует соединение с сервером.

Следующие шаги