0

我有一个类似于这样的场景的自托管应用程序,其中我有一个持续向组广播的方法(无论有人“加入”与否)。就像是:

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));

}

我在这里的实现有问题吗?

4

1 回答 1

0

这是 1.1.0beta 中引入的错误 #2040。团队正在努力修复它。

于 2013-05-16T22:42:44.897 回答