你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
快速入门:从控制台应用广播实时消息
本文内容
先决条件
登录 Azure
克隆示例应用程序
生成并运行示例
运行示例而不发布
使用情况
与非 Microsoft 服务集成
清理资源
后续步骤
显示另外 5 个
Azure SignalR 服务提供了 REST API 来支持服务器到客户端通信方案,例如广播。 你可以选择可以进行 REST API 调用的任何编程语言。 你可以将消息发布到所有已连接的客户端、通过名称指定的特定客户端或者一组客户端。
在本快速入门中,你将了解如何从命令行应用使用 C# 将消息发送到已连接的客户端应用。
本快速入门可以在 macOS、Windows 或 Linux 上运行。
如果没有 Azure 订阅 ,请在开始之前创建一个 Azure 免费帐户 。
遇到问题? 尝试使用故障排除指南 或通知我们 。
使用 Azure 帐户登录到 Azure 门户 。
遇到问题? 尝试使用故障排除指南 或通知我们 。
在本部分中,你将创建一个基本 Azure SignalR 实例来用于你的应用。 以下步骤使用 Azure 门户创建新实例,但你也可以使用 Azure CLI。 有关详细信息,请参阅 Azure SignalR 服务 CLI 参考 中的 az signalr create 命令。
登录 Azure 门户 。
在页面的左上角,选择“+ 创建资源” 。
在“创建资源”页上,在“搜索服务和市场”文本框中,输入“signalr”,然后从列表中选择“SignalR 服务”。
在“SignalR 服务”页上,选择“创建”。
在“基本信息” 选项卡上,输入新 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 中心逻辑时,请使用“无服务器” 。 “经典” 模式仅用于向后兼容,不建议使用。 有关详细信息,请参阅 Azure SignalR 服务中的服务模式 。
对于 SignalR 教程,你不需要更改“网络”和“标记”选项卡上的设置。
选择“基本信息 ”选项卡底部的“查看 + 创建” 按钮。
在“查看 + 创建” 选项卡上检查各个值,然后选择“创建 ”。 部署需要几分钟时间才能完成。
在部署完成后,选择“转到资源组”按钮。
在 SignalR 资源页面上,从左侧菜单中选择“设置 ”下的“密钥 ”。
复制主密钥的连接字符串。 在本教程中,稍后你将需要使用此连接字符串来配置你的应用。
遇到问题? 尝试使用故障排除指南 或通知我们 。
在服务部署的同时,让我们准备好代码。 首先,克隆 GitHub 中的示例应用 。 接下来,为应用设置 SignalR 服务连接字符串。 最后,在本地运行应用程序。
打开 git 终端窗口。 切换到要克隆示例项目的文件夹。
运行下列命令,克隆示例存储库。 此命令在计算机上创建示例应用程序的副本。
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 Key Vault 安全地管理和轮换密钥,使用 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>
遇到问题? 尝试使用故障排除指南 或通知我们 。
还可以运行以下命令来启动服务器或客户端
dotnet run -- server -c "<ConnectionString>" -h <HubName>
dotnet run -- client <ClientName> -c "<ConnectionString>" -h <HubName>
你可以运行示例的根目录中的 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
可以启动具有不同客户端名称的多个客户端。
遇到问题? 尝试使用故障排除指南 或通知我们 。
使用 Azure SignalR 服务,可以将第三方服务与系统集成。
下表显示到目前为止受支持的 REST API 的所有版本。 也可找到每个特定版本的定义文件
展开表
适用于每个特定版本的 API 的列表在下表中提供。
展开表
展开表
版本
API HTTP 方法
请求 URL
请求正文
1.0-preview
POST
https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>
{"target": "<method-name>", "arguments": [...]}
1.0
POST
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>
{"target": "<method-name>", "arguments": [...]}
展开表
版本
API HTTP 方法
请求 URL
请求正文
1.0-preview
POST
https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/group/<group-name>
{"target": "<method-name>", "arguments": [...]}
1.0
POST
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>
{"target": "<method-name>", "arguments": [...]}
展开表
版本
API HTTP 方法
请求 URL
请求正文
1.0-preview
POST
https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/user/<user-id>
{"target": "<method-name>", "arguments": [...]}
1.0
POST
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>
{"target": "<method-name>", "arguments": [...]}
展开表
版本
API HTTP 方法
请求 URL
1.0
PUT
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>
展开表
版本
API HTTP 方法
请求 URL
1.0
DELETE
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>
展开表
API 版本
API HTTP 方法
请求 URL
1.0
GET
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups/<group-name>
1.0
GET
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>
展开表
响应状态代码
说明
200
用户存在
404
用户不存在
展开表
API 版本
API HTTP 方法
请求 URL
1.0
DELETE
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups
展开表
API 版本
API HTTP 方法
请求 URL
请求正文
1.0
POST
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>
{ "target":"<method-name>", "arguments":[ ... ] }
展开表
API 版本
API HTTP 方法
请求 URL
1.0
PUT
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id>
1.0
PUT
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name>
展开表
API 版本
API HTTP 方法
请求 URL
1.0
DELETE
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id>
1.0
DELETE
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name>
展开表
API 版本
API HTTP 方法
请求 URL
1.0
DELETE
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>
1.0
DELETE
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>?reason=<close-reason>
展开表
API 版本
API HTTP 方法
请求 URL
1.0
GET
https://<instance-name>.service.signalr.net/api/v1/health
展开表
响应状态代码
说明
200
服务良好
5xx
服务错误
遇到问题? 尝试使用故障排除指南 或通知我们 。
如果不打算继续使用此应用,请按照以下步骤删除本快速入门中创建的所有资源,以免产生任何费用:
在 Azure 门户的最左侧选择“资源组”,,然后选择创建的资源组。 或者,可以使用搜索框按名称查找资源组。
在打开的窗口中选择资源组,然后单击“删除资源组”。
在新窗口中键入要删除的资源组的名称,然后单击“删除” 。
遇到问题? 尝试使用故障排除指南 或通知我们 。
在本快速入门中,你学习了如何使用 REST API 从 SignalR 服务向客户端广播实时消息。 接下来,了解有关如何使用基于 REST API 构建的 SignalR 服务绑定开发和部署 Azure Functions 的更多信息。