官方套件 · 框架

ASP.NET Core 與 Blazor 的 SignalR 風格 Hub

用您熟悉的 SignalR API 寫 Hub:Clients.All、群組、使用者、強型別 Hub 與 IHubContext。Hub 呼叫照樣由您的伺服器處理,不必架 WebSocket 伺服器、backplane 或 Azure SignalR Service。

  • HibiraHub 的用法和 SignalR 的 Hub 一樣,MapHibiraHub<T>() 把它掛在其他端點旁邊。
  • Hibira.Client 提供 SignalR 用戶端 API,適用 Blazor WebAssembly、Blazor Server、MAUI 與主控台應用程式;瀏覽器端則用 hibira-hub.js。
  • Hibira 套件可發布事件、簽署頻道、驗證 Webhook 並發出核准請求。支援 .NET 8 以上。

登入後,範例程式碼會自動帶入您的叢集主機。 登入

  1. 安裝

    dotnet add package Hibira.AspNetCore --version 0.1.0
    dotnet add package Hibira.Client --version 0.1.0   # Blazor or other .NET clients
    
    dotnet user-secrets set Hibira:AppId YOUR_APP_ID
    dotnet user-secrets set Hibira:Key YOUR_APP_KEY
    dotnet user-secrets set Hibira:Secret YOUR_APP_SECRET
    dotnet user-secrets set Hibira:Host ws.hibira.io
  2. 設定

    using Hibira.AspNetCore;
    
    public class ChatHub : HibiraHub
    {
        public Task SendMessage(string user, string message) =>
            Clients.All.SendAsync("ReceiveMessage", user, message);
    }
    
    // Program.cs
    builder.Services.AddHibira(); // reads the "Hibira" section
    var app = builder.Build();
    app.UseStaticFiles();          // serves hibira-hub.js
    app.MapHibiraHub<ChatHub>("/hubs/chat");
  3. 使用

    // A Blazor component: Microsoft's SignalR tutorial with one using changed
    @using Hibira.Client
    @inject NavigationManager Navigation
    
    @code {
        private HubConnection? hub;
        private readonly List<string> messages = new();
    
        protected override async Task OnInitializedAsync()
        {
            hub = new HubConnectionBuilder()
                .WithUrl(Navigation.ToAbsoluteUri("/hubs/chat"))
                .WithAutomaticReconnect()
                .Build();
            hub.On<string, string>("ReceiveMessage", (user, message) =>
            {
                messages.Add($"{user}: {message}");
                InvokeAsync(StateHasChanged);
            });
            await hub.StartAsync();
        }
    }

開始之前

  • 應用程式的密鑰只會在建立應用程式或輪替密鑰時顯示一次。請只放在伺服器上,不要放進瀏覽器或遊戲的建置檔。
  • Free 方案需要把頁面載入的每個來源都加進應用程式的「允許的來源」(開發時是 https://localhost:5001,之後是您的網域)。"*" 需要付費方案。

請使用儀表板中的應用程式 Key;Secret 只放在你的伺服器上。頻道、事件與授權端點的用法和 Pusher 完全相同。 免費建立帳號 →