Импортировать интерфейс WebSocket API

ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Базовая версия 2 | Стандартный | Стандартная версия 2 | Премиум | Премиум версия 2

С помощью решения API WebSocket службы "Управление API Azure" издатели API могут быстро добавить API WebSocket в службу управления API с помощью портала Azure, Azure CLI, Azure PowerShell и других средств Azure.

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

В этой статье вы узнаете, как:

  • Поймите транзитный поток WebSocket.
  • Добавьте WebSocket API в экземпляр службы управления API.
  • Тестирование API WebSocket.
  • Просмотр метрик и журналов для API WebSocket.
  • Узнайте ограничения API WebSocket.

Предварительные требования

  • Создание экземпляра управления API
  • A WebSocket API
  • Azure CLI

Транзитный сокет WebSocket

Управление API поддерживает транзитный сокет WebSocket.

Во время сквозной передачи WebSocket клиентское приложение устанавливает соединение WebSocket со шлюзом управления API, который затем устанавливает соединение с соответствующими бэкэнд-сервисами. Управление API выступает как прокси-сервер для сообщений между клиентом и сервером WebSocket.

Схема, показывающая поток сквозной передачи WebSocket.

  1. Клиентское приложение отправляет запрос на установление соединения WebSocket шлюзу, вызывая операцию onHandshake.
  2. Шлюз Управления API применяет настроенные политики и отправляет запросы подтверждения WebSocket к соответствующему серверному сервису.
  3. Серверная служба обновляет соединение до WebSocket.
  4. Шлюз обновляет соответствующее подключение к WebSocket.
  5. После установки пары подключений API Management обеспечивает двустороннюю передачу сообщений между клиентским приложением и серверной частью системы.
  6. Клиентское приложение отправляет сообщение шлюзу.
  7. Шлюз перенаправляет сообщение в серверную службу.
  8. Серверная служба отправляет сообщение шлюзу.
  9. Шлюз перенаправит сообщение клиентскому приложению.
  10. При отключении обеих сторон Управление API завершает соответствующее подключение.

Примечание.

Подключения от клиента к бекенду состоят из сопоставлений "один к одному". Один и тот же сеанс WebSocket не может быть распределен по нескольким серверным системам.

Операция «onHandshake»

Согласно протоколу WebSocket, когда клиентское приложение пытается установить подключение WebSocket с серверной службой, оно сначала отправляет запрос рукопожатия для открытия.

Каждый API WebSocket в службе управления API имеет операцию onHandshake . onHandshake — это неизменяемая, неудаляемая, автоматически созданная системная операция. Операция onHandshake позволяет издателям API перехватывать упомянутые запросы на подтверждение и применять к ним политики Управления API.

Скриншот, показывающий пример экрана onHandshake.

Добавьте API WebSocket

  1. На портале Azure перейдите к экземпляру службы управления API.

  2. В меню боковой панели выберите API>+ Добавить API.

  3. В разделе "Определение нового API" выберите плитку WebSocket .

  4. В открывшемся диалоговом окне выберите Полный и заполните обязательные поля формы.

    Поле Описание:
    Показать имя Отображаемое имя вашего API WebSocket.
    Имя. Имя API WebSocket в необработанном виде. Оно заполняется автоматически при вводе отображаемого имени.
    WebSocket адрес Базовый URL с именем вашего WebSocket. Например: ws://example.com/имя_вашего_сокета
    Схема URL-адреса Примите значение по умолчанию.
    Суффикс URL-адреса API Добавьте суффикс URL-адреса для идентификации этого API в данном экземпляре Управления API. Он должен быть уникальным в данной системе управления API.
    Продукты Сопоставьте API WebSocket с определенным продуктом, чтобы опубликовать его.
    Шлюзы Сопоставьте API WebSocket с существующими шлюзами. Локальные шлюзы доступны только на уровнях "Разработчик" и "Премиум".
  5. Нажмите кнопку "Создать".

Тестирование API WebSocket

  1. Перейдите к API WebSocket.

  2. В API WebSocket выберите операцию onHandshake.

  3. Откройте вкладку Тестирование, чтобы перейти к консоли тестирования.

  4. При необходимости укажите параметры строки запроса, необходимые для рукопожатия WebSocket.

    Снимок экрана: параметры теста для API.

  5. Нажмите Подключиться.

  6. Просмотрите состояние подключения в разделе Вывод.

  7. Введите значение в Payload.

  8. Выберите Отправить.

  9. Просмотрите полученные сообщения в разделе Вывод.

  10. Повторите предыдущие шаги, чтобы проверить различные нагрузки.

  11. После завершения тестирования щелкните Отключиться.

Просмотр метрик и журналов

Используйте стандартные функции управления API и Azure Monitor для monitor API WebSocket:

  • Просмотр метрик API в Azure Monitor
  • При необходимости включите параметры диагностики для сбора и просмотра журналов шлюза управления API, включая операции API WebSocket или журналы подключений WebSocket.

Например, на следующем снимке экрана показаны последние ответы API WebSocket с кодом 101 из таблицы ApiManagementGatewayLogs. Эти результаты указывают на успешное переключение запросов с протокола TCP на протокол WebSocket.

Снимок экрана: журналы запросов для запросов API WebSocket.

Ограничения

Ниже приведены текущие ограничения в поддержке WebSocket в управлении API.

  • API WebSocket пока не поддерживаются на уровне потребления.
  • API WebSocket поддерживают следующие допустимые типы буферов для сообщений: Close, BinaryFragment, BinaryMessage, UTF8Fragment и UTF8Message.
  • В настоящее время политика установки заголовков не поддерживает изменение некоторых известных заголовков, включая заголовки Host, в запросах onHandshake.
  • Во время выполнения рукопожатия TLS с серверной частью WebSocket, служба управления API проверяет, что сертификат сервера является доверенным и его субъектное имя соответствует имени хоста. В интерфейсах API HTTP служба Управление API проверяет, является ли сертификат доверенным, но не проверяет, что имя узла и имя субъекта совпадают.
  • Подключения WebSocket нельзя распределить по нескольким серверным узлам или сбалансировать нагрузку между ними, так как после установки каждое подключение поддерживается в формате "один-к-одному" между клиентом и сервером.

Для ограничения подключений WebSocket см. ограничения управления API.

Неподдерживаемые политики

Следующие политики не поддерживаются и не могут применяться к операции onHandshake:

  • Макет ответа
  • Получение из кэша
  • Сохранение в кэше
  • Разрешение кросс-доменных вызовов
  • CORS (Совместное использование ресурсов разных источников)
  • JSONP
  • Установка метода запроса
  • Установить содержание
  • Преобразование XML в JSON
  • Преобразование JSON в XML
  • Преобразование XML с помощью XSLT
  • Проверка содержимого
  • Проверка параметров
  • Проверка заголовков
  • Проверка кода состояния

Примечание.

Если вы применили политики на более высоких уровнях (например, глобальном или уровне продукта), и они наследуются API WebSocket посредством политики, они не применяются во время выполнения.