你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

先决条件

  • Azure 订阅(如果没有),请创建一个 免费帐户
  • Bash 和 PowerShell 命令 shell。 Python、JavaScript 和 Java 示例需要 Bash 命令 shell。
  • 文件编辑器,如 VS Code。
  • Azure CLI: 安装 Azure CLI

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

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

.NET 核心

1. 设置

若要从 CLI 登录到 Azure,请运行以下命令,然后按照提示完成身份验证过程。 如果您使用的是 Cloud Shell,则无需登录。

az login

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

az upgrade

接下来,安装或更新 CLI 的 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"

当您看到一条 JSON 消息,指示客户端现已成功连接,并为其分配唯一的 connectionId

{"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