快速入门:使用 Azure Web PubSub 服务 SDK 发布消息

Azure Web PubSub 可帮助你管理 WebSocket 客户端。 本快速入门介绍如何使用 Azure Web PubSub 服务 SDK 将消息发布到 WebSocket 客户端。

先决条件

  • 一个 Azure 订阅。如果你没有订阅,请创建一个试用订阅
  • Bash 和 PowerShell 命令 shell。 Python、JavaScript 和 Java 示例需要 Bash 命令 shell。
  • 一个文件编辑器,例如 VSCode。
  • Azure CLI:安装 Azure CLI

如果在本地计算机上创建项目,则需要安装所用语言的依赖项:

安装 .NET Core SDK 以及 aspnetcore 和 .NET 运行时。

.NET Core

1. 设置

若要从 CLI 登录到 Azure,请运行以下命令,然后按照提示完成身份验证过程。

az login

确保通过升级命令运行最新版本的 CLI。

az upgrade

接下来,使用 az upgrade 安装或更新 CLI 的 Azure Web PubSub 扩展(如果未安装)。

az extension add --name webpubsub --upgrade

1. 创建资源组

设置以下环境变量。 将 <占位符> 替换为唯一的 Web PubSub 名称。

RESOURCE_GROUP="webpubsub-resource-group"
LOCATION="China East 2"
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 密钥保管库安全存储连接字符串。

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"

如果看到一条 JSON 消息,指出客户端现已成功连接并为其分配了唯一的 connectionId,则表示与 Web PubSub 服务建立了连接:

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

4. 使用服务 SDK 发布消息

你将使用 Azure Web PubSub SDK 向连接到中心的所有客户端发布消息。 可以在 C#、JavaScript、Python 和 Java 之间进行选择。 每种语言的依赖项在适用于该语言的步骤中安装。 Python、JavaScript 和 Java 需要 bash shell 才能运行本快速入门中的命令。

设置项目以发布消息

  1. 为此项目打开一个新的命令 shell。

  2. 从客户端 shell 保存连接字符串。 将 <your_connection_string> 占位符替换为前面步骤中显示的连接字符串。

    connection_string="<your_connection_string>"
    
  3. 现在,为项目选择语言。

  1. 添加名为 publisher 的新项目和 SDK 包 Azure.Messaging.WebPubSub

    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 客户端的命令 shell 会显示收到的消息。

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

清理

可以删除在本快速入门中创建的资源,只需删除包含这些资源的资源组即可。

az group delete --name $RESOURCE_GROUP --yes