2014-07-23 137 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

相关问题