我已经查看了几个地方,但仍然找不到关于如何使用组的明确说明。我正在使用组进行过滤(仅将消息传递给客户端子集)。
我想将客户端加入服务器端的组OnConnected
事件。客户端不需要知道它属于哪个组。
问题:
我是否也应该覆盖OnReconnected
event?
我应该返回从返回的任务GroupManager.Add
作为结果OnConnected
事件?如果我想加入多个小组,我可能需要创建一个组合任务。正确的?
3- 为什么服务器(参见GroupManager.Add
实现)发送AddToGroup
命令客户?有办法解决这个问题吗?也许通过使用Client.AllExcept(...)
并在服务器上手动处理组成员身份(恶心!)?
我正在使用最新版本的 SignalR (1.0.0.1)
- 您不需要覆盖 OnReconnected。当客户端重新连接时,它将重新加入之前所在的所有组。
- 您不必这样做,但如果您尝试在 OnConnected 内发送到该组(如果您选择不返回组添加任务),您将需要等待任务完成。
- 您不想解决这个问题,其必要的原因之一是因为#2(客户端需要知道它属于哪个组)。如果您想对组进行身份验证以重新连接,您始终可以创建一个集线器管道模块并覆盖 BuildRejoiningGroups 函数来执行您自己的验证。
对评论的回应
评论1:是的
注释 2:您必须返回任务,否则什么都不会完成(这是设计使然)。如果您不知道要返回什么,您可以随时返回base.OnConnected()。
当您调用 GroupManager.Add 时,它会返回一个任务,该任务表示连接何时位于所需的组中。加入该组后,客户端会通过令牌收到其现在处于新组中的通知。如果由于连接丢失而必须重新连接,则令牌将允许客户端重新加入组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)