2

我看过几个地方,但仍然找不到关于如何使用组的明确说明。我正在使用一个组进行过滤(仅将消息传递给客户端的子集)。

我想在OnConnected事件中将客户端加入服务器端的组。客户端不需要知道它属于哪些组。

问题:

  1. 我还应该覆盖该OnReconnected事件吗?

  2. GroupManager.Add我应该返回作为OnConnected事件结果返回的任务吗?如果我想加入多个组,我可能需要创建一个组合任务。正确的?

3-为什么服务器(见GroupManager.Add实现)向AddToGroup客户端发送命令?有没有办法解决这个问题?也许通过使用Client.AllExcept(...)和手动处理服务器上的组成员身份(糟糕!)?

我正在使用最新版本的 SignalR (1.0.0.1)

4

1 回答 1

3
  1. 您不需要覆盖 OnReconnected。当客户端重新连接时,它将重新加入之前所在的所有组。
  2. 您不必这样做,但如果您尝试在 OnConnected 中发送到该组(如果您选择不返回组添加任务),您将需要等到任务完成。
  3. 您不想解决此问题,其必要的原因之一是因为#2(客户端需要知道它在哪些组中)。如果要对组进行身份验证以重新连接,您始终可以创建一个中心管道模块并覆盖 BuildRejoiningGroups 函数以执行您自己的验证。

回应评论

评论 1:是
评论 2:您必须返回一个任务,否则什么都不会完成(这是设计使然)。如果您不知道要返回什么,您可以随时返回 base.OnConnected()。

当您调用 GroupManager.Add 时,它会返回一个表示连接何时位于所需组中的任务。一旦加入该组,客户端就会通过令牌收到通知,它现在在一个新组中。如果由于失去连接而必须重新连接,令牌将允许客户端重新加入组。

于 2013-03-18T02:49:32.137 回答