Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
WebSockets, установленный в RFC6455, обеспечивает двустороннее взаимодействие между клиентом и сервером. В отличие от традиционного http-запроса или HTTPS, который, WebSockets позволяет браузеру устанавливать подключение и получать непрерывные данные с сервера, не требуя постоянного извлечения удаленного сервера или необходимости устанавливать несколько подключений в обоих направлениях (клиент к серверу и серверу к клиенту).
Преимущества WebSocket
Протокол WebSocket имеет несколько преимуществ по сравнению с традиционными HTTP-запросами, в том числе:
- Совместимость браузера: почти все современные веб-браузеры поддерживают WebSockets.
- Данные в режиме реального времени: WebSockets обеспечивают передачу данных в режиме реального времени между клиентом и сервером.
- Эффективность: WebSockets устраняет необходимость непрерывного опроса серверов для проверки наличия обновлений.
- Безопасность: WebSockets можно шифровать с помощью TLS и использовать стандартные HTTP-порты, такие как 80 и 443.
- Гибкость: WebSockets можно использовать для различных приложений, включая чат, игры и финансовые торговые платформы.
Как работает протокол WebSocket
Чтобы установить подключение WebSocket, клиент и сервер обмениваются специальным подтверждением на основе протокола HTTP. В случае успешного выполнения протокол прикладного уровня "обновляется" с HTTP до WebSocket, используя ранее установленное соединение TCP. После этого протокол изменяется на WebSockets и трафик больше не передается по протоколу HTTP. Данные отправляются или получают с помощью протокола WebSocket обеими конечными точками, пока подключение WebSocket не будет закрыто.
Примечание.
После обновления подключения до WebSocket в качестве посредника или завершения прокси-сервера Шлюз приложений для контейнеров будут отправлять данные, полученные от внешнего интерфейса в серверную часть, и наоборот, без каких-либо возможностей проверки или манипуляции. Поэтому любые манипуляции, такие как перезаписи заголовков, перезаписи URL-адресов или переопределение имени узла, не будут применяться после установки подключения WebSocket.
Подключения WebSocket могут находиться в виде обычного текста или зашифрованы по протоколу TLS. При установке подключения через обычный текст соединение устанавливается в формате ws://< fqdn>/path. При установке подключения по протоколу TLS подключение устанавливается в формате wss://< fqdn>/path.
Зонды работоспособности
Настройка не требуется для использования запроса WebSocket в Шлюз приложений для контейнеров, однако необходимо убедиться, что вы правильно настраиваете пробы работоспособности, чтобы серверная часть отображалась как работоспособная.
По умолчанию Шлюз приложений для контейнеров пытается инициировать подтверждение HTTP на внутренний порт, на котором запущена служба WebSocket. Во многих случаях это ошибочно обозначает серверную часть как неработоспособную, поэтому необходимо определить HealthCheckPolicy, чтобы убедиться, что проба работоспособности рассматривает использование пробы TCP.
Ниже приведен пример работоспособностиCheckPolicy для серверной части WebSocket.
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
name: websockets-health-check-policy
namespace: test-infra
spec:
targetRef:
group: ""
kind: Service
name: websockets-backend
namespace: test-infra
default:
interval: 5s
timeout: 3s
healthyThreshold: 1
unhealthyThreshold: 1
http:
path: /health
EOF
Примечание.
WebSockets поддерживается только при использовании API шлюза для Шлюз приложений для контейнеров.
Метрики и мониторинг
Журналы диагностики.
Подключения WebSocket работают с помощью отдельного протокола. При запуске подключения браузер получает код состояния HTTP 101, указывающий на переход с HTTP на WebSocket и будет отражен в журнале доступа.
Сведения о подключении WebSocket записываются только при закрытии подключения. Это позволяет точно измерять длительность каждого соединения.
Следующие шаги
Дополнительные сведения о WebSockets и API шлюза