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-Key
Sec-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 отключается клиентом или сервером или сбоем в сети, клиентское приложение, как ожидается, переинициирует соединение с сервером.
Следующие шаги
- Узнайте, как создать профиль Azure Front Door.
- Узнайте, как Azure Front Door направляет трафик в источник.