我有一个.NET控制台应用程序,我正在使用。
练习signalRvar 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");
我看到状态从连接变为已连接但我没有收到&#34;已收到&#34;服务器发送消息时客户端上的事件。一旦客户端订阅,服务器就会发送群组消息,我可以看到正在使用正确的&#34;新群组发送的消息&#34; groupname,但我从未收到客户端上的消息。当服务器使用该方法时,我也没有收到processMessage事件。
服务器代码
private void CallBack(string group, string message)
{
Clients.Group(group).processMessage(group, message);
}
服务器上的另一种方法是Subscribe,它只是将我的内部服务器设置为在有可用于发送给客户端的数据时使用CallBack方法。
修改 这适用于Javascript,它似乎无法在.NET客户端中运行。
答案 0 :(得分:2)
如果没有完整的服务器端代码,很难说,但我认为这部分是错误的
hubConnection.CreateHubProxy("Hub");
作为参数,您需要在服务器端上使用您的hubclass的名称。例如
hubConnection.CreateHubProxy("MyHub");
要获得有关客户端失败原因的更多信息,您可以将以下内容临时添加到HubConnection
hubConnection.TraceLevel = TraceLevels.All;
hubConnection.TraceWriter = Console.Out;
添加后,您将在VS
的输出部分获得进一步的调试信息