首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板