我有一个self-hosted应用程序,类似于我有一种方法可以持续向群组广播(无论某人是否已“加入”)。类似的东西:
var aTimer = new System.Timers.Timer(2000);
aTimer.Elapsed += (sender, e) =>
{
// broadcast to listeners whether they are listening or not
IHubConnectionContext _clients = GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients;
_clients.Group("group1FixedName").showMessage("Some message for group 1 only");
_clients.Group("group2FixedName").showMessage("Some message for group 2 only");
// etc
};
aTimer.Start();
我最近从beta1升级到1.1.0版。我开始观察到“删除”方法不起作用,因为"client" (web browser)仍在接收来自“其他”组的消息,即使我发起了“离开”。请注意,“离开”该组并不意味着关闭Web浏览器。它仍然在同一页面(单页面应用程序)中,离开/加入一个组由选择(例如组合框)触发。
中心代码:
public Task Leave(string groupName)
{
return Groups.Remove(Context.ConnectionId, groupName)
.ContinueWith(z => Clients.Caller.showCallerMessage("You are now leaving " + groupName));
}
javascript客户端中的代码“离开群组”:
chat.server.leave("group1FixedName");
javascript客户端中的代码“加入群组”:
chat.server.join("group1FixedName");
Hub加入代码:
public Task Join(string groupName)
{
return Groups.Add(Context.ConnectionId, groupName)
.ContinueWith(z => Clients.Caller.showCallerMessage("You are now listening to " + groupName));
}
我的实施在这里有问题吗?
答案 0 :(得分:0)
这是1.1.0beta中引入的#2040错误。 团队正在努力修复它。