首頁 > 後端開發 > C++ > 如何將 SignalR Hub 方法整合到 ASP.NET Core 控制器中?

如何將 SignalR Hub 方法整合到 ASP.NET Core 控制器中?

Barbara Streisand
發布: 2025-01-05 04:20:40
原創
348 人瀏覽過

How Can I Integrate SignalR Hub Methods into ASP.NET Core Controllers?

將SignalR Hub 方法整合到ASP.NET Core 控制器中

此查詢深入探討了SignalR Core Hub 方法在ASP.NET中的整合核心控制器。特定用例包括在任務完成後接收來自 Windows 服務的發布請求,該服務與外部程式進行交互,並將此資訊廣播到連接的 SignalR 用戶端。

解決方案 1:直接存取 HubContext

將IHubContext介面注入到控制器中:

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

private IHubContext<VarDesignHub> HubContext
{ get; set; }
登入後複製

然後,直接使用以下方式在所有客戶端上呼叫方法:

await this.HubContext.Clients.All.InvokeAsync("Completed", id);
登入後複製

此方法在所有連接的客戶端上執行方法,提供簡單快速的解決方案。

解決方案2:利用型別集線器

定義一個介面來表示伺服器端方法呼叫客戶端:

public interface ITypedHubClient
{
    Task BroadcastMessage(string name, string message);
}
登入後複製

建立一個繼承自Hub 的Hub:

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

注入類型化集線器上下文並在控制器中使用它:

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" };
    }
}
登入後複製

這種方法利用類型化的集線器客戶端,可以實現更好的控制和可讀性。

以上是如何將 SignalR Hub 方法整合到 ASP.NET Core 控制器中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板