我在我的网站上使用了signalr。我只有一个继承自集线器的类,以及一些客户端代码具有由集线器调用的客户端功能的aspx表单。如何知道什么样的客户端连接到信号中心?
当客户端连接到集线器时,我将它添加到具有clientID的集合中,当客户端断开连接时,我将其从集合中删除。只是想知道是否有客户连接。只要连接了至少一个客户端,计时器就会调用一些方法来填充传播到客户端的服务器上的数据存储库。
然后我打电话的客户这样的事情之前,通常会做:
if (users.Count() > 0)
{
this.Clients.All.UpdateData(JsonConvert.SerializeObject(someData));
...
}
这一切工作正常。但是我需要什么也找不到如何在集线器中做到这一点,就是要知道客户端连接的是否知道是否应为这些客户端创建数据存储库并避免进行不必要的数据库查询。
例如。
myHub.cs
Timer_tick()
{
...
//Collect data to clients Type 1
...
Clients.All.UpdateDataType1(jsonData);
...
//Collect data to clients Type 2
...
Clients.All.UpdateDataType2(jsonData);
...
//Collect data to clients Type 3
...
Clients.All.UpdateDataType3(jsonData);
ClientType1.aspx.js (2 clients connected)
hub.client.UpdateDataType1= function (jsonData) {...);
ClientType2.aspx.js (0 clients connected)
hub.client.UpdateDataType2= function (jsonData) {...);
ClientType2.aspx.js (0 clients connected)
hub.client.UpdateDataType3= function (jsonData) {...);
我知道当我打电话的客户2和3的功能我也不需要有关客户端是否连接担忧。但我需要避免获取我不会使用的数据。目标只是获取我将用于连接的客户端的数据。
所有我能做的就是看是否有客户,但如果有客户的一个specic JS
有没有办法知道这一点?