C# 两个信号机核心集线器之间的通信

C# 两个信号机核心集线器之间的通信,c#,signalr,asp.net-core-signalr,C#,Signalr,Asp.net Core Signalr,我有两个Signar Core Typescript应用程序(A&B),它们有自己的Signar Core C#Hub(C&D) 不,我想从B中的A触发一些东西。我的计划是将触发消息从A发送到C,然后C将其重定向到D并发送到B。在另一个方向上也应该可以这样做 这些集线器彼此独立,因此使一个集线器成为另一个集线器的一部分对我来说不起作用。 我提出的唯一解决方案是使用两个Signar Core C#客户端在集线器之间进行通信,但这似乎是一个很大的开销。或者这是一条路吗?首先,这是一个意见问题,所以它

我有两个Signar Core Typescript应用程序(A&B),它们有自己的Signar Core C#Hub(C&D)

不,我想从B中的A触发一些东西。我的计划是将触发消息从A发送到C,然后C将其重定向到D并发送到B。在另一个方向上也应该可以这样做

这些集线器彼此独立,因此使一个集线器成为另一个集线器的一部分对我来说不起作用。
我提出的唯一解决方案是使用两个Signar Core C#客户端在集线器之间进行通信,但这似乎是一个很大的开销。或者这是一条路吗?

首先,这是一个意见问题,所以它可能会被关闭

但是我认为更好的方法是使用类似于
服务总线
的东西,并实现基于事件的通信。因此,在A发生了一些事情,您在C调用hub方法,然后向D发送一个事件,它将通过A的
信号器触发。使用事件总线将添加一个选项,例如添加另一个可以接收这些事件并执行其他操作的hub(E)

我有两个Signar Core Typescript应用程序(A&B),它们有自己的Signar Core C#Hub(C&D)

不,我想从B中的A触发一些东西

您可以参考以下可能的方法来实现上述要求

方法1:修改您的实现并将现有功能合并到单个集线器类中,然后您可以使SignalR Typescript客户端应用程序(A&B)连接到同一集线器服务器并相互通信

方法2:为每个客户端用户建立与Signal R Typescript客户端应用程序(A和B)上的集线器C和集线器D的连接,以便使用Typescript客户端应用程序A的用户也可以与来自Typescript客户端应用程序B的用户通信

方法3:如您所述,安装Microsoft.AspNetCore.signar.Client包并在集线器服务器项目(A&B)上实现signar.NET客户端逻辑,这将使它们同时充当服务器和signar.NET客户端

方法4:如@Kiril1512所述,可以在单独的项目中实现signar.NET客户端逻辑,该项目可能是基于队列(或基于servicebus的etc)的作业。如果来自Signal Typescript客户端应用程序A的用户希望与连接到集线器D的Signal Typescript客户端应用程序B的用户通信,他可以向集线器C发送特定消息以添加新的队列消息,然后它将触发该作业以调用集线器服务器D的集线器方法,将消息推送到来自Signal Typescript客户端应用程序B的特定用户,如下图所示


这两个集线器是否在同一个解决方案中?如果是这样,您就不能将您的hub方法注入到另一个signarhub实例中吗?看看这个:@Andy这并不能保证两个中心同时运行。这个问题中没有任何观点。