如何解决两个signalR核心集线器之间的通信
我有两个SignalR Core Typescript应用程序(A&B)和它们自己的SignalR Core C#集线器(C&D)。
不,我想从B中的A触发某些事情。我的计划是将触发消息从A发送到C,然后C将其重定向到D并将其发送到B。在其他方向也应该如此
集线器彼此独立,因此使一个集线器成为另一个集线器对我不起作用。 我想到的唯一解决方案是使用两个SignalR Core C#客户端在集线器之间进行通信,但这似乎是一个很大的开销。还是要走的路?
解决方法
首先,这是一个意见问题,因此可能会关闭。
但是我相信更好的方法是使用Service Bus
之类的东西并实现基于事件的通信。因此,在A处发生了某些事情,您在C处调用了集线器方法,然后将事件发送到D,它将通过signalR
触发A。使用事件总线将添加该选项以添加例如另一个集线器(E)接收这些事件并做其他事情。
我有两个SignalR Core Typescript应用程序(A&B)和它们自己的SignalR Core C#集线器(C&D)。
不,我想从B中的A触发某些事情。
您可以参考以下可能的方法来达到上述要求。
方法1: 修改实现并将现有功能合并到单个Hub类中,然后可以使SignalR Typescript客户端应用程序(A和B)连接到相同的Hub服务器并互相交流。
方法2: 为每个客户端用户在SignalR Typescript客户端应用程序(A和B)上建立到集线器C和集线器D的连接,以便使用Typescript客户端的用户应用程序A还可以通过Typescript客户端应用程序B与用户进行通信。
如您所述方法3: ,请安装Microsoft.AspNetCore.SignalR.Client程序包,并在集线器服务器项目(A和B)上实现SignalR .NET客户端逻辑,这将使它们既充当服务器又充当SignalR .NET客户端。
方法4: 如@ Kiril1512所述,可以在单独的项目中实现SignalR .NET客户端逻辑,该项目可能基于队列(或基于Servicebus等)工作。如果来自SignalR Typescript客户端应用程序A的用户想要与连接到集线器D的SignalR Typescript客户端应用程序B的用户进行通信,则他可以向集线器C发送特定消息以添加新的队列消息,然后它将触发该作业以调用集线器方法集线器服务器D可以从SignalR Typescript客户端应用程序B向特定用户推送消息,如下所示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。