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


Краткое руководство. Создание приложения чата с помощью функции Azure в Socket.IO бессерверном режиме (предварительная версия)

В этой статье вы узнаете, как создать приложение чата с помощью Web PubSub для Socket.IO в бессерверном режиме с Функции Azure. В этом руководстве описано, как защитить приложение с помощью проверки подлинности на основе удостоверений во время работы в Интернете.

Источник проекта использует Bicep для развертывания инфраструктуры в Azure и Функции Azure core Tools для развертывания кода в приложении-функции.

Необходимые компоненты

Получение кода примера

Найдите пример кода: Socket.IO бессерверный пример (TS)

git clone https://github.com/Azure/azure-webpubsub.git
cd ./sdk/webpubsub-socketio-extension/examples/chat-serverless-typescript

Развертывание инфраструктуры

Примеры чата должны развертывать несколько служб в Azure:

Мы используем Bicep для развертывания инфраструктуры. Файл находится в папке ./infra . Разверните его с помощью команды az:

az deployment sub create -n "<deployment-name>" -l "<deployment-location>" --template-file ./infra/main.bicep --parameters environmentName="<env-name>" location="<location>"
  • <deployment-name>: имя развертывания.
  • <deployment-location>: расположение метаданных развертывания. Обратите внимание, что это не расположение, в котором развертываются ресурсы.
  • <env-name>: имя является частью имени группы ресурсов и имени ресурса.
  • <location>: расположение ресурсов.

Проверка инфраструктуры

В выпуске инфраструктуры мы развертываем приложение-функцию Azure в плане потребления и учетную запись мониторинга и хранения, необходимые приложению-функции. Мы также развертываем веб-pubSub для Socket.IO ресурса в бессерверном режиме.

Для назначения проверки подлинности на основе удостоверений мы развертываем управляемое удостоверение, назначаемое пользователем, назначаем его приложению-функции и Socket.IO ресурсу и предоставьте ему некоторые разрешения:

  • Роль владельца данных BLOB-объектов хранилища: доступ к хранилищу для приложения-функции
  • Роль издателя метрик мониторинга: монитор доступа для приложения-функции
  • Роль владельца службы Web PubSub: Access Web PubSub для Socket.IO для приложения-функции

Согласно настройке приложения Функции Azure для использования входа в Microsoft Entra, мы создадим субъект-службу. Чтобы избежать использования секрета для субъекта-службы, мы используем учетные данные федеративного удостоверения.

Развертывание примера в приложении-функции

Мы подготовили скрипт bash для развертывания примера кода в приложении-функции:

# Deploy the project
./deploy/deploy.sh "<deployment-name>"

Просмотр сведений о развертывании

Для развертывания примера приложения необходимо выполнить два шага.

  • Публикация кода в приложении-функции (использование основных средств Функции Azure)

    func extensions sync
    npm install
    npm run build
    func azure functionapp publish <function-app-name>
    
  • Настройте web PubSub для Socket.IO, чтобы добавить параметр концентратора, который может отправлять запрос в приложение-функцию. Согласно ограничению поставщика веб-перехватчиков приложения-функции, необходимо получить ключ расширения, заполненный функцией. Дополнительные сведения см. в привязке триггера. При использовании проверки подлинности на основе удостоверений в параметрах концентратора необходимо назначить целевой ресурс, который является clientId субъекта-службы, созданного ранее.

    code=$(az functionapp keys list -g <resource-group> -n <function-name> --query systemKeys.socketio_extension -o tsv)
    az webpubsub hub create -n <socketio-name> -g <resource-group> --hub-name "hub" --event-handler url-template="https://${<function-name>}.azurewebsites.net/runtime/webhooks/socketio?code=${code}" user-event-pattern="*" auth-type="ManagedIdentity" auth-resource="<service-principal-client-id>"
    

Запуск примера приложения

После развертывания кода посетите веб-сайт, чтобы попробовать пример:

https://<function-endpoint>/api/index

Снимок экрана: бессерверное приложение чата.

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

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