我有一个.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信息