Краткое руководство. Публикация сообщений с помощью пакета SDK службы Azure Web PubSub

Azure Web PubSub помогает управлять клиентами WebSocket. В этом кратком руководстве показано, как публиковать сообщения в клиентах WebSocket с помощью пакета SDK службы Azure Web PubSub.

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

  • Если у вас нет подписки Azure, создайте бесплатную учетную запись.
  • командная оболочка Bash и PowerShell. Для примеров Python, JavaScript и Java требуется командная оболочка Bash.
  • Редактор файлов, например VSCode.
  • Azure CLI: установка Azure CLI

При создании проекта на локальном компьютере необходимо установить зависимости для используемого языка:

Установите пакет SDK для .NET Core и aspnetcore среду выполнения и dotnet.

.NET Core

1. Настройка

Чтобы войти в Azure из CLI, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности. Если вы используете Cloud Shell, выполнять вход необязательно.

az login

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

az upgrade

Затем установите или обновите расширение Azure Web PubSub для интерфейса командной строки, если оно не было установлено с az upgrade.

az extension add --name webpubsub --upgrade

1. Создание группы ресурсов

Задайте следующие переменные среды. Замените <заполнитель> уникальным именем Web PubSub.

RESOURCE_GROUP="webpubsub-resource-group"
LOCATION="EastUS"
WEB_PUBSUB_NAME="<your-unique-name>"

Создайте группу ресурсов для проекта Web PubSub.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

2. Развертывание экземпляра службы Web PubSub

Используйте команду для az webpubsub create создания и развертывания экземпляра службы Web PubSub.

az webpubsub create \
  --name $WEB_PUBSUB_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --sku Free_F1

Сохраните строку подключения службы. Строка подключения используется пакетом SDK службы для публикации сообщений.

Важно!

В рабочей среде следует безопасно хранить строки подключения с помощью azure Key Vault.

az webpubsub key show --name $WEB_PUBSUB_NAME --resource-group $RESOURCE_GROUP --query primaryConnectionString

3. Подключение клиента к экземпляру службы

Создайте клиент Web PubSub. Клиент поддерживает подключение к службе, пока оно не будет завершено.

Используйте команду , az webpubsub client чтобы запустить подключение клиента WebSocket к службе. Клиенты всегда подключаются к концентратору, поэтому укажите имя концентратора для клиента, к которому нужно подключиться.

az webpubsub client start \
  --name $WEB_PUBSUB_NAME \
  --resource-group $RESOURCE_GROUP \
  --hub-name "myHub1" \
  --user-id "user1"

Подключение к службе Web PubSub устанавливается, когда отображается сообщение JSON о том, что клиент успешно подключен, и ему назначен уникальный connectionId:

{"type":"system","event":"connected","userId":"user1","connectionId":"<your_unique_connection_id>"}

4. Публикация сообщений с помощью пакета SDK службы

Вы будете использовать пакет SDK Azure Web PubSub для публикации сообщения для всех клиентов, подключенных к концентратору. Вы можете выбрать C#, JavaScript, Python и Java. Зависимости для каждого языка устанавливаются на этапах для этого языка. Для выполнения команд, приведенных в этом кратком руководстве, для python, JavaScript и Java требуется оболочка Bash.

Настройка проекта для публикации сообщений

  1. Откройте новую командную оболочку для этого проекта.

  2. Сохраните строку подключения из клиентской оболочки. Замените <your_connection_string> заполнитель строкой подключения, отображаемой на предыдущем шаге.

    connection_string="<your_connection_string>"
    
  3. Теперь выберите язык для проекта.

  1. Добавьте новый проект с именем publisher и пакет Azure.Messaging.WebPubSubSDK .

    mkdir publisher
    cd publisher
    dotnet new console
    dotnet add package Azure.Messaging.WebPubSub
    
  2. Обновите файл, Program.cs чтобы использовать WebPubSubServiceClient класс для отправки сообщений клиентам. Замените код в Program.cs файле следующим кодом.

    using System;
    using System.Threading.Tasks;
    using Azure.Messaging.WebPubSub;
    
    namespace publisher
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                if (args.Length != 3) {
                    Console.WriteLine("Usage: publisher <connectionString> <hub> <message>");
                    return;
                }
                var connectionString = args[0];
                var hub = args[1];
                var message = args[2];
    
                var service = new WebPubSubServiceClient(connectionString, hub);
    
                // Send messages to all the connected clients
                // You can also try SendToConnectionAsync to send messages to the specific connection
                await service.SendToAllAsync(message);
            }
        }
    }
    

    Вызов service.SendToAllAsync() просто отправляет сообщение всем подключенным клиентам в концентраторе.

  3. Выполните следующую команду, чтобы опубликовать сообщение в службе.

    dotnet run $connection_string "myHub1" "Hello World"
    
  4. В предыдущей командной оболочке, содержащей клиент Web PubSub, отображается полученное сообщение.

    {"type":"message","from":"server","dataType":"text","data":"Hello World"}
    

Очистка

Вы можете удалить ресурсы, созданные в этом кратком руководстве, удалив группу ресурсов, содержащую их.

az group delete --name $RESOURCE_GROUP --yes