2013-02-28 27 views
66

我正在使用SignalR向所有客戶端廣播消息。我需要觸發廣播我的HUB類即東西之外象下面這樣:如何在hubpipleline外部使用SignalR集線器實例

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

我收到錯誤消息:

使用不是由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

謝謝,我發現它 – 2013-02-28 06:27:49

+4

「context.Clients.All.Send」不會向調用者廣播回來,而是隻發送給其他人。有任何想法嗎? – user384080 2013-12-28 05:21:09

+4

如果您使用的是'GetHubContext',則沒有調用者,因爲這意味着在Hub外部使用。 'Clients.All'應該解決當前連接到Hub的每個客戶端。 – halter73 2013-12-30 22:32:47

相關問題