SignalR服务器中心不保留组列表,因此我假设当我向组发送广播消息时,它会发送给连接到集线器的所有人,客户端会根据其参与组过滤掉该消息。如果我向特定组发送消息,它似乎会被发送给每个人,并且可以被不在指定组中的人拦截,该组知道如何使用浏览器调试器。如果我想要一个安全的广播(甚至不通过网络发送到某些客户端)我假设我需要单独的集线器或者我是否需要单独的子域?
答案 0 :(得分:0)
单独的集线器听起来不是一个好主意。虽然您可能可以验证连接上的用户并拒绝非授权用户的连接,但如果您需要一种动态创建隔离集线器的方法。但是,如果此功能足够您可以使用Authorize attribute来保护集线器或集线器方法。
对于需要为不同用户组复制相同功能的情况,您可以使用SignalR组,但每次连接时都需要验证用户是否属于该组。 SignalR文档包含有关如何执行此操作的示例verification。请注意,每个人都可以尝试连接到您的组,您应该在连接时进行验证,而不是依赖于您没有为某个客户端调用add方法。
答案 1 :(得分:0)
SignalR仅发送给组中的客户端。这只是一个设计问题,您无法检索组中的连接列表。与SignalR中的其他所有组一样,组是基于订阅的,因此服务器知道哪些连接需要接收消息,但它深埋在内部。
我会指向相关的服务器端代码,但现在没有时间查找它。 在客户端代码中很容易看到,因为它不是很多代码 - 所以你可以验证那里没有过滤。
每个中心也不会分开群组。