Azure SignalR 服务是一种完全托管的服务,可简化将实时 Web 功能添加到应用程序的过程。它基于 ASP.NET Core SignalR 构建,但将其作为独立的云服务提供,让你无需管理基础设施即可轻松扩展。本文将通过一个使用 C# 和 .NET Core 的简单示例,引导你快速入门 Azure SignalR 服务的无服务器模式。
在开始之前,请确保你已具备以下条件:
mySignalRService)。在 SignalR 服务资源的概览页面或“密钥”设置中,找到“连接字符串”。它通常以 Endpoint=https://...;AccessKey=...;Version=1.0; 的格式呈现。复制主连接字符串。这是你的应用程序连接到 Azure SignalR 服务所必需的凭证。
我们将创建一个简单的控制台应用来模拟客户端连接和消息发送。
1. 打开终端或命令提示符,创建一个新目录并初始化项目:
`bash
mkdir SignalRClient
cd SignalRClient
dotnet new console
`
2. 添加必要的 NuGet 包:
`bash
dotnet add package Microsoft.AspNetCore.SignalR.Client
dotnet add package Microsoft.Extensions.Logging.Console
`
Program.cs 文件,替换为以下代码。请务必将 <your-connection-string> 替换为你在第二步中复制的实际连接字符串。using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.Extensions.Logging;
namespace SignalRClient
{
class Program
{
static async Task Main(string[] args)
{
// 使用你的 Azure SignalR 服务连接字符串
var connectionString = "<your-connection-string>";
// 从连接字符串中提取终结点和访问密钥(简化处理,生产环境建议使用更安全的方式)
var endpoint = connectionString.Split(';')[0].Replace("Endpoint=", "");
// 构建 Hub 连接。在无服务器模式下,我们直接连接到 Azure SignalR 服务。
// "chat" 是 Hub 的名称,需要与你的服务器端逻辑(如果有)或协商端点匹配。
var connection = new HubConnectionBuilder()
.WithUrl($"{endpoint}/client/?hub=chat")
.ConfigureLogging(logging =>
{
logging.AddConsole();
logging.SetMinimumLevel(LogLevel.Debug);
})
.Build();
// 定义一个从服务器(或通过服务中转)接收消息的处理程序
connection.On<string, string>("ReceiveMessage", (user, message) =>
{
Console.WriteLine($"{user}: {message}");
});
try
{
// 启动连接
await connection.StartAsync();
Console.WriteLine("连接已建立。输入消息(输入 'exit' 退出):");
// 简单的循环来发送消息
string input;
do
{
input = Console.ReadLine();
if (!string.IsNullOrEmpty(input) && input.ToLower() != "exit")
{
// 发送消息到名为 "SendMessage" 的 Hub 方法
await connection.InvokeAsync("SendMessage", "ConsoleUser", input);
}
} while (input?.ToLower() != "exit");
}
catch (Exception ex)
{
Console.WriteLine($"连接错误: {ex.Message}");
}
finally
{
// 关闭连接
await connection.DisposeAsync();
}
}
}
}
重要说明:在纯粹的无服务器场景下,通常没有常驻的应用程序服务器来托管 Hub 逻辑。Azure SignalR 服务无服务器模式允许客户端直接连接到服务,并通过 Azure Functions 或 Event Grid 等事件驱动服务来处理上游消息(例如 SendMessage)。上述客户端代码主要演示了连接和基本通信模式。要处理 SendMessage 调用,你需要配置一个 Azure Function(使用 SignalR 服务绑定)来接收并广播消息。
1. 在项目目录中,运行应用程序:
`bash
dotnet run
`
ReceiveMessage 处理程序可能不会被触发(除非你有另一个已连接的客户端或已配置的后端)。InvokeAsync 时,它可以向一个 Function 端点发送 HTTP 请求,由该 Function 通过 SignalR 服务将消息广播给所有连接的客户端。通过以上步骤,你已经成功创建了一个 Azure SignalR 服务资源(无服务器模式),并建立了一个能够与之通信的基本 C# 客户端。这为构建可扩展的实时应用程序(如聊天室、实时仪表板、协作工具等)奠定了坚实的基础。
如若转载,请注明出处:http://www.taiputype.com/product/17.html
更新时间:2026-04-08 22:18:15
PRODUCT