컨트롤러에서 SignalR Core Hub 메서드 호출
ASP.NET Core 애플리케이션에서는 컨트롤러에서 SignalR 허브와 통신해야 하는 경우가 많습니다. 서버 측 이벤트로 클라이언트 측 애플리케이션을 업데이트합니다. 이를 달성하기 위한 두 가지 접근 방식은 다음과 같습니다.
해결책 1: 유형이 지정되지 않은 HubContext 사용
이 방법을 사용하면 연결된 모든 클라이언트에서 메서드를 직접 호출할 수 있습니다. 유형이 지정되지 않은 IHubContext
public class VarDesignCommController : Controller { private readonly IHubContext<VarDesignHub> _hubContext; public VarDesignCommController(IHubContext<VarDesignHub> hubContext) { _hubContext = hubContext; } [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { await _hubContext.Clients.All.InvokeAsync("TaskCompleted", id); return new JsonResult(true); } }
해결책 2: 형식화된 허브 및 인터페이스 사용
이 접근 방식은 형식화된 허브와 인터페이스를 사용하여 호출할 수 있는 클라이언트측 메서드를 정의합니다. 컨트롤러에서.
허브용 인터페이스 생성 클라이언트:
public interface ITypedHubClient { Task TaskCompleted(int id); }
허브에서 상속
public class VarDesignHub : Hub<ITypedHubClient> { public async Task TaskCompleted(int id) { await Clients.All.InvokeAsync("Completed", id); } }
입력된 허브 컨텍스트를 컨트롤러에 삽입:
public class VarDesignCommController : Controller { private readonly IHubContext<VarDesignHub, ITypedHubClient> _hubContext; public VarDesignCommController(IHubContext<VarDesignHub, ITypedHubClient> hubContext) { _hubContext = hubContext; } [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { await _hubContext.Clients.All.TaskCompleted(id); return new JsonResult(true); } }
위 내용은 ASP.NET Core 컨트롤러에서 SignalR Core Hub 메서드를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!