我想澄清一下SignalR周围的几点。我有一个应用程序可以读取交易(例如,股票代码具有关联的股票价格流)。这个SignalR集线器的组合在股票代码上。它有一个发布者,它在启动时启动(读取流数据),然后客户订阅某些股票代码。此类中心的工作流程已有详细记录。
我有第二个集线器,用于搜索从表中读取的无关(上述)数据。此集线器的集线器发布者未在集线器启动时启动。我有发布者在订阅时开始。订阅接收搜索条件,创建一个组(其名称基本上是搜索条件)。这种类型的集线器对我来说并不是很清楚。特别是当我输入不同的搜索条件时,我应该取消订阅的时间和地点。在我订阅的那一刻,然后基于搜索接收回来的消息。当我输入不同的搜索条件时,我应该取消订阅 - (a)来自客户,或者(b)我是否应该简单地将旧标准传递给' next'搜索条件,并在服务器上调用unsubscibe(即unsubscibe one并订阅另一个),或者(c)我是否需要明确取消订阅?
非常感谢任何帮助
答案 0 :(得分:0)
SignalR实际上并不是为pub / sub设计的,有一些构建在SignalR上的库可以解决这个问题,例如我自己的https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki
这会抽象出信号器,现在您可以在您认为适合您的域(Backend)中消除强类型消息。客户端可以收听这些消息,我的库会将它们粘合在一起。
我的库不使用SignalR组,而是拥有自己的库,用于将消息路由到特定客户端。 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki/Implement-constraint-handlers
博客文章
http://andersmalmgren.com/2014/05/27/client-server-event-aggregation-with-signalr/