ホームページ >バックエンド開発 >C++ >ASP.NET Core コントローラーから SignalR Hub メソッドを呼び出す方法

ASP.NET Core コントローラーから SignalR Hub メソッドを呼び出す方法

Susan Sarandon
Susan Sarandonオリジナル
2025-01-05 03:32:39873ブラウズ

How to Call a SignalR Hub Method from an ASP.NET Core Controller?

コントローラーから SignalR Core Hub メソッドを呼び出す

SignalR Core は、ASP.NET Core アプリケーションに強力なリアルタイム通信メカニズムを提供します。この記事では、コントローラーから SignalR ハブ メソッドを呼び出す一般的なシナリオについて説明します。

提供された例は、Windows サービスから開始された外部操作の完了時に接続されたクライアントに通知する必要性を示しています。サービスは SignalR と直接対話できないため、2 つの潜在的なソリューションを検討します。

解決策 1: IHubContext を使用する

目的のハブの IHubContext をコントローラーに挿入します:

public class VarDesignCommController : Controller
{
    public VarDesignCommController(IHubContext<VarDesignHub> hubcontext)
    {
        HubContext = hubcontext;
    }
    ...
}

次に、ハブ メソッドを呼び出します:

await this.HubContext.Clients.All.InvokeAsync("Completed", id);

ソリューション2: 型付きハブの使用

より詳細に制御するには、型付きクライアント インターフェイスを作成します:

public interface ITypedHubClient
{
    Task BroadcastMessage(string name, string message);
}

ハブ クラスから継承し、クライアント側メソッドを定義します:

public class ChatHub : Hub<ITypedHubClient>
{
    public void Send(string name, string message)
    {
        Clients.All.BroadcastMessage(name, message);
    }
}

型指定されたハブ コンテキストを挿入し、メソッドを呼び出します:

// In VarDesignCommController
[Route("api/demo")]
public class DemoController : Controller
{
    IHubContext<ChatHub, ITypedHubClient> _chatHubContext;
    public DemoController(IHubContext<ChatHub, ITypedHubClient> chatHubContext)
    {
        _chatHubContext = chatHubContext;
    }
    
    [HttpGet]
    public IEnumerable<string> Get()
    {
        _chatHubContext.Clients.All.BroadcastMessage("test", "test");
        return new string[] { "value1", "value2" };
    }
}

以上がASP.NET Core コントローラーから SignalR Hub メソッドを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。