Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете, как создать приложение чата с помощью Web PubSub для Socket.IO в бессерверном режиме с Функции Azure. В этом руководстве описано, как защитить приложение с помощью проверки подлинности на основе удостоверений во время работы в Интернете.
Источник проекта использует Bicep для развертывания инфраструктуры в Azure и Функции Azure core Tools для развертывания кода в приложении-функции.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Получение кода примера
Найдите пример кода: Socket.IO бессерверный пример (TS)
git clone https://github.com/Azure/azure-webpubsub.git
cd ./sdk/webpubsub-socketio-extension/examples/chat-serverless-typescript
Развертывание инфраструктуры
Примеры чата должны развертывать несколько служб в Azure:
- Приложение-функция Azure
- Web PubSub для Socket.IO
- Управляемое удостоверение: удостоверение для обмена данными между службами
Мы используем 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
Следующие шаги
Далее вы можете следовать руководству, чтобы написать приложение пошаговые инструкции.