SignalR Hub 메서드를 ASP.NET Core 컨트롤러에 통합
이 문의는 ASP.NET 내에서 SignalR Core Hub 메서드의 통합에 대해 자세히 설명합니다. 코어 컨트롤러. 구체적인 사용 사례에는 작업 완료 시 외부 프로그램과 상호 작용하는 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
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!