>백엔드 개발 >C++ >ASP.NET Core 컨트롤러에서 SignalR Core Hub 메서드를 호출하는 방법은 무엇입니까?

ASP.NET Core 컨트롤러에서 SignalR Core Hub 메서드를 호출하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-05 05:55:44800검색

How to Invoke SignalR Core Hub Methods from an ASP.NET Core Controller?

컨트롤러에서 SignalR Core Hub 메서드 호출

ASP.NET Core 애플리케이션에서는 컨트롤러에서 Hub 메서드를 호출해야 하는 경우가 있습니다. 예를 들어, 외부 서비스가 작업을 수행하고 SignalR을 통해 연결된 클라이언트에 알려야 하는 경우.

솔루션 1(동적)

Microsoft.AspNetCore.SignalR 라이브러리를 사용하는 경우 (버전 1.0.0-alpha2-final) 허브의 IHubContext를 컨트롤러에 삽입할 수 있습니다. 예는 다음과 같습니다.

[Route("API/vardesigncomm")]
public class VarDesignCommController : Controller
{
    [HttpPut("ProcessVarDesignCommResponse/{id}")]
    public async Task<IActionResult> ProcessVarDesignCommResponse(int id)
    {
        await this.HubContext.Clients.All.InvokeAsync("Completed", id);
        return new JsonResult(true);
    }

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

솔루션 2(입력됨)

서버가 클라이언트 허브에서 호출할 수 있는 메서드를 정의하는 인터페이스를 만드는 것을 고려해 보세요. 이 접근 방식을 "유형화된 허브 끝점"이라고 합니다.

public interface ITypedHubClient
{
    Task TaskCompleted(int id);
}

public class VarDesignHub : Hub<ITypedHubClient>
{
    public Task TaskCompleted(int id) => Clients.All.InvokeAsync("Completed", id);
}

컨트롤러에서 유형화된 HubContext를 삽입하고 메서드를 호출합니다.

[Route("API/demo")]
public class DemoController : Controller
{
    private IHubContext<VarDesignHub, ITypedHubClient> _chatHubContext;

    public DemoController(IHubContext<VarDesignHub, ITypedHubClient> chatHubContext)
    {
        _chatHubContext = chatHubContext;
    }

    [HttpGet]
    public IActionResult TaskCompleted(int id)
    {
        _chatHubContext.Clients.All.TaskCompleted(id);
        return Ok();
    }
}

위 내용은 ASP.NET Core 컨트롤러에서 SignalR Core Hub 메서드를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.