c# – SignalR .NET客户端无法接收消息

我有一个.NET控制台应用程序,我正在练习signalR.

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);
}

服务器上的另一个方法是Subscribe,它只是设置我的内部服务器,当它有可用于发送给客户端的数据时使用CallBack方法.

编辑
这在Javascript中工作,它似乎在.NET客户端中不起作用.

解决方法:

没有完整的服务器端代码,很难说,但我认为这部分是错误的

hubConnection.CreateHubProxy("Hub");

作为参数,您需要在服务器端上使用您的hubclass的名称.例如

hubConnection.CreateHubProxy("MyHub");

要在客户端获取有关失败原因的更多信息,可以临时将以下内容添加到HubConnection中

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

添加后,您将在VS的输出部分获得进一步的debuging信息

上一篇:c# – 是否有地方可以捕获所有信号错误?


下一篇:使用SignalR从C#调用JS方法?