Как использовать экземпляр концентратора SignalR за пределами hubpipleline


Я использую SignalR для передачи сообщений всем моим клиентам. Мне нужно запустить трансляцию за пределами моего класса концентратора, т. е. что-то вроде ниже:

var broadcast = new chatHub(); broadcast.Send("Admin","stop the chat");

Я получаю сообщение об ошибке:

использование экземпляра концентратора, не созданного HubPipeline, не поддерживается.

1 70

1 ответ:

вы должны использовать 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.