İki signalR Core Hub arasında iletişim
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
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.

Öncelikle bu bir fikir sorusu yani belki kapanacak.
Ancak daha iyi yaklaşımın Service Bus
olay 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 signalR
A 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.