การสื่อสารระหว่าง 2 signalR Core Hubs

Aug 17 2020

ฉันมีแอป SignalR Core typescript (A & B) สองตัวพร้อมด้วย SignalR Core C # Hub (C & D) ของตัวเอง

ไม่ฉันต้องการทริกเกอร์บางอย่างจาก A ใน B แผนของฉันคือส่งข้อความทริกเกอร์จาก A ไป C จากนั้น C จะเปลี่ยนเส้นทางไปยัง D และส่งไปยัง B สิ่งเดียวกันก็ควรจะเป็นไปได้ในทิศทางอื่นเช่นกัน

ฮับเป็นอิสระจากกันดังนั้นการทำให้ฮับหนึ่งเป็นส่วนหนึ่งของอีกฮับหนึ่งจึงไม่ได้ผลสำหรับฉัน ทางออกเดียวที่ฉันคิดขึ้นมาคือการใช้ไคลเอนต์ SignalR Core C # สองตัวเพื่อสื่อสารระหว่างฮับ แต่ดูเหมือนว่าจะเป็นค่าใช้จ่ายที่มาก หรือเป็นทางไป?

คำตอบ

1 FeiHan Aug 20 2020 at 15:06

ฉันมีแอป SignalR Core typescript (A & B) สองตัวพร้อมด้วย SignalR Core C # Hub (C & D) ของตัวเอง

ไม่ฉันต้องการเรียกบางสิ่งจาก A ใน B

คุณสามารถอ้างถึงแนวทางที่เป็นไปได้ต่อไปนี้เพื่อให้บรรลุข้อกำหนดข้างต้น

แนวทางที่ 1:แก้ไขการใช้งานของคุณและรวมฟังก์ชันการทำงานที่มีอยู่เป็นคลาส Hub เดียวจากนั้นคุณสามารถทำให้แอปไคลเอนต์ SignalR typescript (A & B) เชื่อมต่อกับฮับเซิร์ฟเวอร์เดียวกันและสื่อสารกันได้

แนวทางที่ 2:สร้างการเชื่อมต่อกับทั้ง Hub C และ Hub D บนแอปไคลเอ็นต์ SignalR typescript (A & B) สำหรับผู้ใช้ไคลเอ็นต์แต่ละรายเพื่อให้ผู้ใช้ที่ใช้แอปไคลเอ็นต์ typescript A สามารถสื่อสารกับผู้ใช้จากแอปไคลเอ็นต์ typescript B ได้

แนวทางที่ 3:ตามที่คุณกล่าวถึงติดตั้งแพคเกจ Microsoft.AspNetCore.SignalR.Client และใช้ตรรกะไคลเอนต์ SignalR .NET บนโครงการเซิร์ฟเวอร์ฮับ (A & B) ซึ่งจะทำให้พวกเขาทำหน้าที่เป็นทั้งเซิร์ฟเวอร์และไคลเอนต์ SignalR .NET

แนวทางที่ 4:ตามที่ @ Kiril1512 กล่าวถึงสามารถใช้ลอจิกไคลเอ็นต์ SignalR .NET ในโปรเจ็กต์แยกต่างหากที่อาจเป็นงานตามคิว (หรือตาม servicebus เป็นต้น) หากผู้ใช้จากแอปไคลเอนต์ SignalR typescript A ต้องการสื่อสารกับผู้ใช้จากแอปไคลเอนต์ SignalR typescript B ที่เชื่อมต่อกับ Hub D เขาสามารถส่งข้อความเฉพาะไปยัง Hub C เพื่อเพิ่มข้อความคิวใหม่จากนั้นจะทริกเกอร์งานนั้นเพื่อเรียกใช้วิธีการฮับของ ฮับเซิร์ฟเวอร์ D เพื่อส่งข้อความไปยังผู้ใช้เฉพาะจากแอปไคลเอนต์ SignalR typescript B ดังด้านล่าง

2 Kiril1512 Aug 18 2020 at 05:41

ก่อนอื่นนี่เป็นคำถามเกี่ยวกับความคิดเห็นดังนั้นอาจจะถูกปิด

แต่ฉันเชื่อว่าแนวทางที่ดีกว่าคือการใช้บางอย่างเช่นService Busและใช้การสื่อสารตามเหตุการณ์ มีบางอย่างเกิดขึ้นที่ A และคุณเรียกใช้เมธอดฮับที่ C จากนั้นส่งเหตุการณ์ไปที่ D และจะทริกเกอร์ผ่านsignalRA การใช้บัสเหตุการณ์จะเพิ่มตัวเลือกในการเพิ่มเช่นฮับอื่น (E) ที่สามารถรับเหตุการณ์เหล่านั้นและทำ อื่น ๆ อีก.