如果我有一个signalR集线器向所有具有相当大的有效负载或私有信息的客户端发送消息,那么连接到集线器(同一组的一部分)的所有客户端都会收到消息,即使他们没有订阅那些在客户端的事件?
想知道客户端是否足够聪明,可以协商它对服务器的事件,以便服务器不会发送无关的数据?
谢谢!
答案 0 :(得分:4)
是的,他们这样做。如果客户端订阅了集线器,它将接收通过该集线器的广播信道发送的所有消息。
除了发送到不包含客户端或专门发送给其他客户端的特定组之外,无法阻止客户端收到消息。
一些例子:
Clients.All.foo(); // All subscribed clients will foo invoked
Clients.Group("bar").foo(); // All subscribed clients to the hubs group "Bar" will have foo invoked. If your client is not subscribed to "bar" it will not have "foo" invoked.
Clients.Client("AClientsConnectionId").foo(); // The client with the specified connection id will have foo invoked.