快速入门:从控制台应用广播实时消息

Azure SignalR 服务提供了 REST API 来支持服务器到客户端通信方案,例如广播。 你可以选择可以进行 REST API 调用的任何编程语言。 你可以将消息发布到所有已连接的客户端、通过名称指定的特定客户端或者一组客户端。

在本快速入门中,你将了解如何从命令行应用使用 C# 将消息发送到已连接的客户端应用。

重要

本文中出现的原始连接字符串仅用于演示目的。

连接字符串包括应用程序访问 Azure SignalR 服务所需的授权信息。 连接字符串中的访问密钥类似于服务的根密码。 在生产环境中,请始终保护访问密钥。 使用 Azure 密钥保管库安全地管理和轮换密钥,使用 Microsoft Entra ID 保护连接字符串,并使用 Microsoft Entra ID 授权访问

避免将访问密钥分发给其他用户、对其进行硬编码或将其以纯文本形式保存在其他人可以访问的任何位置。 如果你认为访问密钥可能已泄露,请轮换密钥。

先决条件

本快速入门可以在 macOS、Windows 或 Linux 上运行。

如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

遇到问题? 请试用故障排除指南

登录 Azure

使用 Azure 帐户登录到 Azure 门户

遇到问题? 请试用故障排除指南

在本部分中,你将创建一个基本 Azure SignalR 实例来用于你的应用。 以下步骤使用 Azure 门户创建新实例,但你也可以使用 Azure CLI。 有关详细信息,请参阅 Azure SignalR 服务 CLI 参考中的 az signalr create 命令。

  1. 登录 Azure 门户
  2. 在页面的左上角,选择“+ 创建资源” 。
  3. 在“创建资源”页上,在“搜索服务和市场”文本框中,输入“signalr”,然后从列表中选择“SignalR 服务”。
  4. 在“SignalR 服务”页上,选择“创建”。
  5. 在“基本信息”选项卡上,输入新 SignalR 服务实例的基本信息。 输入以下值:
字段 建议的值 描述
订阅 选择订阅 选择要用于创建新的 SignalR 服务实例的订阅。
资源组 创建一个名为 SignalRTestResources 的资源组 为 SignalR 资源选择或创建资源组。 对于本教程,创建新的资源组比使用现有资源组更为合适。 若要在完成本教程后释放资源,请删除资源组。

删除资源组还会删除属于该组的所有资源。 此操作不能撤消。 删除资源组之前,请确保它不包含你希望保留的资源。

有关详细信息,请参阅 Using resource groups to manage your Azure resources(使用资源组管理 Azure 资源)。
资源名称 testsignalr 输入用于 SignalR 资源的唯一资源名称。 如果你的区域中已使用了 testsignalr,请添加一个数字或字符,以将名称设为唯一。

该名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母和连字符 (-) 字符。 该名称的开头或末尾不能是连字符字符,并且连续的连字符字符无效。
区域 选择你的区域 为新的 SignalR 服务实例选择合适的区域。

Azure SignalR 服务当前并非在所有区域中都可用。 有关详细信息,请参阅 Azure SignalR 服务区域可用性
定价层 选择“更改”,然后选择“免费(仅限开发/测试)”。 选择“选择”以确认你选择的定价层。 Azure SignalR 服务有三个定价层:免费、标准和高级。 教程默认使用免费层级,除非在前提条件中另有说明。

若要详细了解各个层级之间的功能差异以及定价,请参阅 Azure SignalR 服务定价
服务模式 选择适当的服务模式 在 Web 应用中托管 SignalR 中心逻辑并使用 SignalR 服务作为代理时,请使用“默认”。 使用 Azure Functions 等无服务器技术托管 SignalR 中心逻辑时,请使用 Serverless

“经典”模式仅用于向后兼容,不建议使用。

有关详细信息,请参阅 Azure SignalR 服务中的服务模式

对于 SignalR 教程,你不需要更改“网络”和“标记”选项卡上的设置。

  1. 选择“基本信息”选项卡底部的“查看 + 创建”按钮。
  2. “查看 + 创建”选项卡上检查各个值,然后选择“创建”。 部署需要几分钟时间才能完成。
  3. 部署完成后,选择转到资源按钮。
  4. 在 SignalR 资源页面上,从左侧菜单中选择“设置”下的“密钥”。
  5. 复制主密钥的连接字符串。 在本教程中,稍后你将需要使用此连接字符串来配置你的应用。

遇到问题? 请试用故障排除指南

克隆示例应用程序

在服务部署的同时,让我们准备好代码。 首先,克隆 GitHub 中的示例应用。 接下来,为应用设置 SignalR 服务连接字符串。 最后,在本地运行应用程序。

  1. 打开 git 终端窗口。 切换到要克隆示例项目的文件夹。

  2. 运行下列命令,克隆示例存储库。 此命令在计算机上创建示例应用程序的副本。

    git clone https://github.com/aspnet/AzureSignalR-samples.git
    

遇到问题? 请试用故障排除指南

生成并运行示例

此示例是一个控制台应用,展示了如何使用 Azure SignalR 服务。 它提供了两种模式:

  • 服务器模式:使用简单的命令调用 Azure SignalR 服务 REST API。
  • 客户端模式:连接到 Azure SignalR 服务,并从服务器接收消息。

另外,你还将了解如何生成访问令牌来向 Azure SignalR 服务进行身份验证。

生成可执行文件

我们使用 macOS osx.10.13-x64 作为示例。 你可以找到关于如何在其他平台上进行构建的参考资料

cd AzureSignalR-samples/samples/Serverless/

dotnet publish -c Release -r osx.10.13-x64

启动客户端

本文中出现的原始连接字符串仅用于演示目的。 在生产环境中,请始终保护访问密钥。 使用 Azure 密钥保管库安全地管理和轮换密钥,使用 Microsoft Entra ID 保护连接字符串,并使用 Microsoft Entra ID 授权访问

cd bin/Release/netcoreapp2.1/osx.10.13-x64/

Serverless client <ClientName> -c "<ConnectionString>" -h <HubName>

启动服务器

cd bin/Release/netcoreapp2.1/osx.10.13-x64/

Serverless server -c "<ConnectionString>" -h <HubName>

遇到问题? 请试用故障排除指南

运行示例而不发布

还可以运行以下命令来启动服务器或客户端

# Start a server
dotnet run -- server -c "<ConnectionString>" -h <HubName>

# Start a client
dotnet run -- client <ClientName> -c "<ConnectionString>" -h <HubName>

使用 user-secrets 指定连接字符串

你可以在示例的根目录下运行 dotnet user-secrets set Azure:SignalR:ConnectionString "<ConnectionString>"。 之后,将不再需要选项 -c "<ConnectionString>"

遇到问题? 请试用故障排除指南

使用情况

在服务器启动后,使用以下命令发送消息:

send user <User Id>
send users <User List>
send group <Group Name>
send groups <Group List>
broadcast

可以启动具有不同客户端名称的多个客户端。

遇到问题? 请试用故障排除指南

与非 Microsoft 服务集成

使用 Azure SignalR 服务,可以将第三方服务与系统集成。

定义技术规范

有关所有受支持的 API 版本和规范,请参阅 REST API 版本

遇到问题? 请试用故障排除指南

清理资源

如果不打算继续使用此应用,请按照以下步骤删除本快速入门中创建的所有资源,以免产生任何费用:

  1. 在 Azure 门户的最左侧选择“资源组”,,然后选择创建的资源组。 或者,可以使用搜索框按名称查找资源组。

  2. 在打开的窗口中选择资源组,然后单击“删除资源组”。

  3. 在新窗口中键入要删除的资源组的名称,然后单击“删除”

遇到问题? 请试用故障排除指南

后续步骤

在本快速入门中,你学习了如何使用 REST API 从 SignalR 服务向客户端广播实时消息。 接下来,了解有关如何使用基于 REST API 构建的 SignalR 服务绑定开发和部署 Azure Functions 的更多信息。