我有一个类似于这样的场景的自托管应用程序,其中我有一个持续向组广播的方法(无论有人“加入”与否)。就像是:
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 版。我开始观察到“删除”方法不起作用,因为即使我发起了“离开” , “客户端”(Web 浏览器)仍在接收来自“其他”组的消息。请注意,“离开”组并不意味着关闭 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));
}
我在这里的实现有问题吗?