İki signalR Core Hub arasında iletişim

Aug 17 2020

Kendi SignalR Core C # Hub'larına (C & D) sahip iki signalR Core Typescript Uygulamasına (A ve B) sahibim.

Hayır B'de A'dan bir şeyi tetiklemek istiyorum. Planım tetik mesajını A'dan C'ye göndermekti, sonra C onu D'ye yönlendirip B'ye gönderecekti. Aynısı diğer yönde de mümkün olmalı.

Hub'lar birbirinden bağımsızdır, bu yüzden bir Hub'ı diğerinin bir parçası yapmak benim için işe yaramaz. Bulduğum tek çözüm, Hub'lar arasında iletişim kurmak için iki SignalR Core C # Client kullanmaktı, ancak bu büyük bir ek yük gibi görünüyor. Yoksa gitmenin yolu bu mu?

Yanıtlar

1 FeiHan Aug 20 2020 at 15:06

Kendi SignalR Core C # Hub'larına (C & D) sahip iki signalR Core Typescript Uygulamasına (A ve B) sahibim.

Hayır, B'de A'dan bir şeyi tetiklemek istiyorum.

Yukarıdaki gerekliliğe ulaşmak için aşağıdaki olası yaklaşımlara başvurabilirsiniz.

Yaklaşım 1: Uygulamanızı değiştirin ve mevcut işlevselliği tek bir Hub sınıfında birleştirin, ardından SignalR Typescript istemci uygulamalarının (A & B) aynı hub sunucusuna bağlanmasını ve birbirleriyle iletişim kurmasını sağlayabilirsiniz.

Yaklaşım 2: Her istemci kullanıcısı için SignalR Typescript istemci uygulamalarında (A & B) hem Hub C hem de Hub D ile bağlantılar kurun, böylece Typescript istemci uygulaması A'yı kullanan kullanıcı aynı zamanda Typescript istemci uygulaması B'deki kullanıcılarla da iletişim kurabilir.

Yaklaşım 3: Bahsettiğiniz gibi, Microsoft.AspNetCore.SignalR.Client paketini kurun ve SignalR .NET istemci mantığını Hub sunucu projesine (A & B) uygulayarak, hem sunucu hem de SignalR .NET istemcisi olarak hareket etmelerini sağlayın.

Yaklaşım 4: @ Kiril1512'de belirtildiği gibi, SignalR .NET istemci mantığını kuyruk tabanlı (veya servicebus tabanlı vb.) Bir iş olabilecek ayrı bir projede uygulayabilir. SignalR Typescript istemci uygulaması A'dan bir kullanıcı, Hub D'ye bağlanan SignalR Typescript istemci uygulaması B'den kullanıcılarla iletişim kurmak isterse, yeni bir kuyruk mesajı eklemek için Hub C'ye belirli bir mesaj gönderebilir, ardından bu işi, Hub yöntemini çağırmak için tetikleyecektir. Aşağıda olduğu gibi SignalR Typescript istemci uygulaması B'den belirli kullanıcılara mesaj (lar) göndermek için Hub sunucusu D.

2 Kiril1512 Aug 18 2020 at 05:41

Öncelikle bu bir fikir sorusu yani belki kapanacak.

Ancak daha iyi yaklaşımın Service Busolay tabanlı iletişim gibi bir şey kullanmak ve uygulamak olduğuna inanıyorum . Yani A'da bir şey olur ve siz C'de hub yöntemini çağırırsınız, ardından D'ye bir olay gönderirsiniz ve bu signalRA aracılığıyla tetiklenir . Olay veriyolunun kullanılması, örneğin bu olayları alabilen ve gerçekleştirebilen başka bir hub (E) ekleme seçeneğini ekler. başka bir şey.