公式パッケージ · フレームワーク

ASP.NET Core と Blazor のための SignalR 風ハブ

使い慣れた SignalR の API でハブを書けます。Clients.All、グループ、ユーザー、型付きハブ、IHubContext がそのまま使え、ハブの呼び出しはこれまでどおりサーバーで処理します。WebSocket サーバー、バックプレーン、Azure SignalR Service は不要です。

  • HibiraHub は SignalR の Hub と同じように使え、MapHibiraHub<T>() でほかのエンドポイントと並べてマップできます。
  • Hibira.Client は Blazor WebAssembly、Blazor Server、MAUI、コンソールアプリ向けに SignalR のクライアント API を提供し、ブラウザでは 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、その後は自分のドメイン)。"*" は有料プランで使えます。

ダッシュボードのアプリキーを使ってください。シークレットはサーバー側だけに置きます。チャンネル、イベント、認可エンドポイントは Pusher とまったく同じように動作します。 無料でアカウントを作成 →