2014-07-23 132 views
4

我有一個.NET控制檯應用程序,我正在練習signalR。SignalR .NET客戶端沒有收到消息

var hubConnection = new HubConnection("http://URL/signalr/"); 

var hub = hubConnection.CreateHubProxy("Hub"); 

hub.StateChanged += change => 
{ 
    Console.WriteLine(change.NewState); 
}; 
hub.Received += s => 
{ 
    Console.WriteLine(s); 
}; 

hub.On<string, string>("processMessage", (group, message) => 
{ 
    Console.WriteLine(message); 
}); 

await hubConnection.Start(); 

await hub.Invoke<string>("Subscribe", "New group"); 

我看到狀態從連接更改爲連接,但是當服務器發送消息時,我沒有在客戶端上收到「已收到」事件。服務器在客戶端訂閱後立即發送羣組消息,並且我可以看到正在使用正確的「新羣組」組名發送的消息,但是我從不在客戶端收到消息。當服務器使用該方法時,我也不會收到processMessage事件。

服務器代碼

private void CallBack(string group, string message) 
{ 
    Clients.Group(group).processMessage(group, message); 
} 

服務器上的另一種方法是訂閱它只是設置我內心的服務器使用的回調方法,當有可用的數據發送給客戶端。

編輯 這在Javascript中起作用,它似乎不能在.NET客戶端中工作。

+0

你可以請添加服務器代碼以及 –

+2

爲什麼近距離投票和downvote?這是一個努力的合法問題。 –

+0

剛剛添加了服務器代碼。 – Chrisgozd

回答

2

不完整的服務器端代碼,這是很難說,但我覺得這部分是錯誤的

hubConnection.CreateHubProxy("Hub"); 

,因爲你需要在服務器端你hubclass名稱參數。例如

hubConnection.CreateHubProxy("MyHub"); 

要獲得客戶方更多的信息失敗的原因,你可以臨時添加以下到您HubConnection

hubConnection.TraceLevel = TraceLevels.All; 
hubConnection.TraceWriter = Console.Out; 

添加此您將得到進一步的調試運行在你的輸出部分信息在VS

相關問題