我意识到SignalR和ASP.NET SignalR之间存在重大变化,我改变了我的代码以适应这种情况。但出于某种原因,我无法找到正确的变化。
我遇到的问题是服务器没有向客户端发送消息。
旧SignalR代码:
服务器
var context = GlobalHost.ConnectionManager.GetHubContext<Dashboard>();
var subscribers = context.Clients;
if (!string.IsNullOrWhiteSpace(message.Source))
{
var subscriber = subscribers[message.Source];
subscriber.messageReceived(message);
}
客户端
$.connection.dashboard.messageReceived = function(){...};
新代码(ASP.NET SignalR):
服务器
var context = GlobalHost.ConnectionManager.GetHubContext<Dashboard>();
var subscribers = context.Clients;
if (!string.IsNullOrWhiteSpace(message.Source))
{
var subscriber = subscribers.Group(message.Source);
subscriber.messageReceived(message);
}
客户端
$.connection.dashboard.client.messageReceived = function(){...};
有人可以帮我弄清楚这里出了什么问题吗?
答案 0 :(得分:0)
我能够让你的代码逻辑工作。这就是我构建逻辑的原因:
服务器:
public class Status : Hub
{
public override Task OnConnected()
{
Groups.Add(Context.ConnectionId, "foo");
return base.OnConnected();
}
public void foo()
{
var context = GlobalHost.ConnectionManager.GetHubContext<Status>();
var subscribers = context.Clients;
var subscriber = subscribers.Group("foo");
subscriber.messageReceived("ello");
}
}
客户端:
var status = $.connection.status;
status.client.messageReceived = function (val) {
alert(val);
}
$.connection.hub.start().done(function() {
status.server.foo();
});
我对你的实施无效的唯一想法是:
希望这有帮助!