Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex API Gateway
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Создание API-шлюза
    • Изменение API-шлюза и его спецификации
    • Подключение домена
    • Удаление API-шлюза
    • Мониторинг
    • Просмотр журнала выполнения
  • Практические руководства
    • Все практические руководства
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка навыка Алисы и сайта с авторизацией
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции
    • Разработка CRUD API для сервиса фильмов
    • Работа с API-шлюзом по протоколу WebSocket
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Расширения спецификации
      • Обзор
      • Статический ответ
      • Вызов функции
      • Интеграция с Serverless Containers
      • Обращение по HTTP
      • Интеграция с Object Storage
      • Интеграция с DataSphere
      • Интеграция с Data Streams
      • Интеграция с Message Queue
      • Интеграция с YDB
      • Жадные параметры
      • Обобщенный HTTP-метод
      • Авторизация с помощью функции
      • Поддержка протокола WebSocket
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ApiGatewayService
      • OperationService
    • REST (англ.)
      • Overview
      • ApiGateway
        • Overview
        • addDomain
        • create
        • delete
        • get
        • getOpenapiSpec
        • list
        • listAccessBindings
        • listOperations
        • removeDomain
        • setAccessBindings
        • update
        • updateAccessBindings
  • Справочник API Websocket
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ConnectionService
    • REST (англ.)
      • Overview
      • Connection
        • Overview
        • disconnect
        • get
        • send
  • Вопросы и ответы
  1. Практические руководства
  2. Работа с API-шлюзом по протоколу WebSocket

Работа с API-шлюзом по протоколу WebSocket

Статья создана
Yandex Cloud
  • Перед началом работы
    • Необходимые платные ресурсы
  • Создайте API-шлюз
  • Установите соединение
  • Проверьте работу соединения
  • Как удалить созданные ресурсы

Чтобы установить соединение с API-шлюзом по протоколу WebSocket:

  1. Создайте API-шлюз.
  2. Установите соединение.
  3. Проверьте работу соединения.

Если созданные ресурсы больше не нужны, удалите их.

Перед началом работы

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость ресурсов входит плата за количество запросов к API-шлюзу и исходящий трафик (см. тарифы Yandex API Gateway).

Создайте API-шлюз

Консоль управления
  1. В консоли управления выберите каталог, в котором необходимо создать API-шлюз.
  2. В списке сервисов выберите API Gateway.
  3. Нажмите кнопку Создать API-шлюз.
  4. В поле Имя введите websocket.
  5. (опционально) В поле Описание введите описание.
  6. В блок Спецификация добавьте спецификацию:
    openapi: 3.0.0
    info:
      title: Test API
      version: 1.0.0
    paths:
      /connections:
        x-yc-apigateway-websocket-message:
          summary: Get connection identifier
          operationId: getConnectionID
          parameters:
            - name: X-Yc-Apigateway-Websocket-Connection-Id
              in: header
              description: Websocket connection identifier
              required: true
              schema:
                type: string
          responses:
            '200':
              description: Connection identifier
              content:
                text/plain:
                  schema:
                    type: string
          x-yc-apigateway-integration:
            type: dummy
            http_code: 200
            http_headers:
              Content-Type: application/json
            content:
              text/plain: '{"connection_id":"{X-Yc-Apigateway-Websocket-Connection-Id}"}'
    
  7. Нажмите кнопку Создать.

Установите соединение

  1. Откройте терминал и установите утилиту wscat:
    npm install -g wscat
    
  2. Установите соединение с API-шлюзом. Вместо <идентификатор_API-шлюза> укажите идентификатор API-шлюза.
    wscat -c wss://<идентификатор_API-шлюза>.apigw.yandexcloud.net/connections
    Connected (press CTRL+C to quit)
    
  3. Введите любое сообщение и нажмите Enter.

Сообщение отправится через установленное соединение в API-шлюз. API-шлюз вызовет интеграцию и отправит ответ — вы увидите его на экране. В ответе будет идентификатор установленного соединения:

> Hello!
< {"connection_id":"<идентификатор соединения>"}

Проверьте работу соединения

Откройте новое окно в терминале и проверьте работу соединения, используя полученный идентификатор соединения.

CLI

Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Получите информацию об установленном соединении:
    yc serverless api-gateway websocket get <идентификатор_соединения>
    
  2. Отправьте сообщение на клиентскую сторону:
    yc serverless api-gateway websocket send <идентификатор соединения> --data Hello!
    
  3. Закройте соединение:
    yc serverless api-gateway websocket disconnect <идентификатор соединения>
    
  4. Перейдите в окно терминала с установленным соединением. Там должна отобразиться следующая информация:
    wscat -c wss://<идентификатор API-шлюза>.apigw.yandexcloud.net/connections
    Connected (press CTRL+C to quit)
    > Hello!
    < {"connection_id":"<идентификатор соединения>"}
    < Hello!
    Disconnected (code: 1000, reason: "")
    

Как удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы, удалите API-шлюз.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте API-шлюз
  • Установите соединение
  • Проверьте работу соединения
  • Как удалить созданные ресурсы