Home >Backend Development >C++ >How Can I Integrate SignalR Hub Methods into ASP.NET Core Controllers?

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

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 04:20:40358browse

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

Integrating SignalR Hub Methods into ASP.NET Core Controllers

This inquiry delves into the integration of SignalR Core Hub methods within an ASP.NET Core controller. The specific use case involves receiving a post request from a Windows service, which interacts with external programs, upon task completion, and broadcasting this information to connected SignalR clients.

Solution 1: Accessing HubContext Directly

Inject the IHubContext interface into the controller:

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

private IHubContext<VarDesignHub> HubContext
{ get; set; }

Then, directly call methods on all clients using:

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

This approach executes methods on all connected clients, providing a simple and quick solution.

Solution 2: Leveraging Typed Hubs

Define an interface to represent server-side method calls on clients:

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

Create a Hub inheriting from Hub:

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

Inject the typed hub context and work with it in the controller:

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" };
    }
}

This approach utilizes typed hub clients, allowing for greater control and readability.

The above is the detailed content of How Can I Integrate SignalR Hub Methods into ASP.NET Core Controllers?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn