2013-02-28 2 views
66

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

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

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

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

ответ

111

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

+0

Спасибо, я нашел его –

+4

«context.Clients.All.Send» не транслируется обратно вызывающему, а только другим. есть идеи? – user384080

+4

Если вы используете 'GetHubContext', нет вызывающего абонента, поскольку это предназначено для использования вне концентратора. 'Clients.All' должен обращаться к каждому клиенту, который в настоящее время подключен к концентратору. – halter73