두 개의 signalR 코어 허브 간의 통신

Aug 17 2020

두 개의 signalR Core Typescript 앱 (A 및 B)과 자체 SignalR Core C # 허브 (C 및 D)가 있습니다.

아니요 B의 A에서 무언가를 트리거하고 싶습니다. 내 계획은 A에서 C로 트리거 메시지를 전송 한 다음 C가이를 D로 리디렉션하고 B로 전송하는 것이 었습니다. 다른 방향에서도 마찬가지입니다.

허브는 서로 독립적이므로 하나의 허브를 다른 허브의 일부로 만드는 것은 나에게 적합하지 않습니다. 내가 생각 해낸 유일한 해결책은 두 개의 SignalR Core C # 클라이언트를 사용하여 허브간에 통신하는 것이지만 이는 큰 오버 헤드처럼 보입니다. 아니면 갈 길입니까?

답변

1 FeiHan Aug 20 2020 at 15:06

두 개의 signalR Core Typescript 앱 (A 및 B)과 자체 SignalR Core C # 허브 (C 및 D)가 있습니다.

아니요 B의 A에서 무언가를 트리거하고 싶습니다.

위의 요구 사항을 달성하기 위해 다음 가능한 접근 방식을 참조 할 수 있습니다.

접근 방식 1 : 구현을 수정하고 기존 기능을 단일 허브 클래스로 병합 한 다음 SignalR Typescript 클라이언트 앱 (A 및 B)을 동일한 허브 서버에 연결하고 서로 통신하도록 할 수 있습니다.

접근 방식 2 : 각 클라이언트 사용자에 대해 SignalR Typescript 클라이언트 앱 (A 및 B)에서 허브 C와 허브 D 모두에 연결을 설정하여 Typescript 클라이언트 앱 A를 사용하는 사용자가 Typescript 클라이언트 앱 B의 사용자와 통신 할 수 있도록합니다.

접근 방식 3 : 언급했듯이 Microsoft.AspNetCore.SignalR.Client 패키지를 설치하고 Hub 서버 프로젝트 (A 및 B)에 SignalR .NET 클라이언트 논리를 구현하면 서버 및 SignalR .NET 클라이언트 역할을 모두 수행합니다.

접근 방식 4 : @ Kiril1512가 언급했듯이 큐 기반 (또는 서비스 버스 기반 등) 작업 일 수있는 별도의 프로젝트에서 SignalR .NET 클라이언트 로직을 구현할 수 있습니다. SignalR Typescript 클라이언트 앱 A의 사용자가 Hub D에 연결하는 SignalR Typescript 클라이언트 앱 B의 사용자와 통신하려는 경우 허브 C에 특정 메시지를 보내 새 대기열 메시지를 추가 한 다음 해당 작업을 트리거하여 Hub 메서드를 호출합니다. 허브 서버 D는 아래와 같이 SignalR Typescript 클라이언트 앱 B에서 특정 사용자에게 메시지를 푸시합니다.

2 Kiril1512 Aug 18 2020 at 05:41

우선 이것은 의견 질문이므로 아마도 종료 될 것입니다.

그러나 더 나은 접근 방식은 같은 것을 사용하고 Service Bus이벤트 기반 통신을 구현 하는 것이라고 생각합니다 . 따라서 A에서 어떤 일이 발생하고 C에서 허브 메소드를 호출 한 다음 D로 이벤트를 전송 signalR하면 A 를 통해 트리거됩니다 . 이벤트 버스를 사용하면 예를 들어 이러한 이벤트를 수신하고 수행 할 수있는 다른 허브 (E)를 추가하는 옵션이 추가됩니다. 다른 것.