SignalR .NET客户端无法接收消息。

3
我有一个.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 客户端中似乎不起作用。


2
为什么会有关闭投票和踩票?这是一个真正有努力的问题。 - AD.Net
刚刚添加了服务器代码。 - Chrisgozd
你确定你的客户端代码是准确的吗?那段代码看起来有问题,你不能在 hubConnection 上调用 On,应该在 hub 上调用...我理解这可能只是一个简单的拼写错误,但如果代码确实有明显的错误(甚至无法编译),那就很难证明哪里出了问题。 - Wasp
抱歉,是的,应该在中心上。 - Chrisgozd
@Chrisgozd,你解决了上述问题吗?我也遇到了类似的问题。 - Vinodhini Ramasamy
显示剩余4条评论
1个回答

2
没有完整的服务器端代码很难确定,但我认为这部分是错误的。
hubConnection.CreateHubProxy("Hub");

作为参数,您需要在服务器端输入您的hub类的名称。例如:
hubConnection.CreateHubProxy("MyHub");

为了获取更多有关客户端失败的信息,您可以将以下内容临时添加到您的HubConnection中。
hubConnection.TraceLevel = TraceLevels.All;
hubConnection.TraceWriter = Console.Out;

在添加此内容后,您将在VS的输出部分获得更多的调试信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接