如何将唯一标识符传递给SignalR客户端/服务器连接?

时间:2018-01-14 20:24:36

标签: signalr signalr-hub

我正在考虑使用Signal R作为我的系统

我系统的每个用户都会观看一小组数据。

例如,Fred smith(UserID 1)可能想知道Gold的价格

UserID 2想知道黄金和白银的价格

全天将有数百种价格通过市场

当我的系统出现新价格时,我正在考虑查看登录的用户,看看他们是否关心价格已经进入

如果用户关心,我想将价格发送到客户端实例

我不希望在每个价格进入时通知所有Signal R客户,因为数据太多了!

我假设这依赖于能够存储生成客户端的东西然后通过连接到集线器传递它

Signal R是否支持此功能?我看不出任何明显的东西?

我可以完全控制我的中心。

目前,我计划将数据写入数据库,我使用SQL依赖来触发集线器的行动

我在MVC 5中使用Signal R

干杯

1 个答案:

答案 0 :(得分:1)

Possiblity A)使用signalR的Groupping mechanisme

  • 我建议你为每个"项目"创建一个小组。 (黄金白银,....)。 在用户登录的情况下,您应该查看他是哪些项目 感兴趣并订阅这些团体。

    (您的中心方法中的Groups.Add(...)

  • 因此,如果项目的值发生变化,您可以发送新的 对所有订户(对一组感兴趣的客户)的价值

    Clients.Group(groupName).newItemValue(YOURIDEMID, YOURNEWVALUE);

有关使用信号器进行灌浆的更多详细信息,请访问: https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/working-with-groups

Possiblity B)自己处理

  • 如果客户端连接到服务器,请保存此客户端的ID。同时转到您的数据库并显示该客户的感兴趣项目。 - >最后,您应该有一个包含已连接客户端ID(id)的字典,以及包含感兴趣项目的列表值。
  • 如果项目的值发生变化,您将遍历所有已连接的客户端并搜索对该项目重复的客户端。最后给他们发新值。