官方包 · 框架

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 完全相同。 免费创建账号 →