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.yy817.cn/product/17.html
更新時間:2026-06-18 05:39:11
PRODUCT