반응형
Hubpipleline 외부에서 SignalR 허브 인스턴스를 사용하는 방법
SignalR을 사용하여 모든 클라이언트에게 메시지를 브로드 캐스트합니다. 내 허브 클래스 외부, 즉 아래와 같은 방송을 트리거해야합니다.
var broadcast = new chatHub(); broadcast.Send("Admin","stop the chat");
다음과 같은 오류 메시지가 나타납니다.
HubPipeline에 의해 생성되지 않은 허브 인스턴스 사용은 지원되지 않습니다.
다음을 사용해야합니다 GetHubContext
.
var context = GlobalHost.ConnectionManager.GetHubContext<chatHub>();
context.Clients.All.Send("Admin", "stop the chat");
이에 대해서는 http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#callfromoutsidehub에 자세히 설명되어 있습니다 .
GlobalHost
가 어디로 갔는지 궁금해하는 사람들을위한 작은 업데이트입니다 . SignalR은 .net 코어 용으로 완전히 다시 작성되었습니다. 따라서 SignalR.Core 패키지 ( SignalR 버전 간 차이 )를 사용하는 경우 서비스에 삽입하여 SignalR 허브 컨텍스트의 인스턴스를 가져옵니다.
public class MyNeedyService
{
private readonly IHubContext<MyHub> ctx;
public MyNeedyService(IHubContext<MyHub> ctx)
{
this.ctx = ctx;
}
public async Task MyMethod()
{
await this.ctx.All.SendAsync("clientCall");
}
}
그리고 Startup.cs
:
services.AddSignalR()/*.AddAzureSignalR("...")*/;
Microsoft 문서는 다음과 같습니다 . 허브 외부에서 SignalR 메시지 보내기 .
반응형
'development' 카테고리의 다른 글
어셈블리 (단위 테스트)가 다른 어셈블리의 내부 속성에 액세스하도록 허용하려면 어떻게합니까? (0) | 2020.10.12 |
---|---|
C ++ 코드에 대한 호출 그래프를 생성하는 방법 (0) | 2020.10.12 |
VBA 배열 정렬 기능? (0) | 2020.10.12 |
QCombobox에서 선택한 값을 어떻게 얻을 수 있습니까? (0) | 2020.10.12 |
PHP memcached 치명적 오류 : 'Memcache'클래스를 찾을 수 없습니다. (0) | 2020.10.12 |