2017-05-05 2 views
1

Ich schrieb ein Client-Server-Programm mit dem Thrift-Framework, da der Server in C# codiert ist und die Clients in Java sind. Meine Frage ist, wie kann ich eine Nachricht machen Zuhörer mit Thrift? Zum Beispiel hat mein Programm eine Liste, die der Server an jeden Client sendet, wenn man sich mit ihm verbindet. Wenn ich drei Clients mit dem Server verbunden habe und einer von ihnen diese Liste (die vor dem Start des Servers deklariert wurde) ändert, wie kann ich den Rest der Clients mitteilen, dass die Liste geändert wurde?Thrift: Senden Sie eine Nachricht an alle Clients mit dem Server verbunden

Vielen Dank.

Antwort

3

Die Frage asked einige Male wurde in verschiedene Wege. Es gibt auch at least one yet unsolved JIRA ticket um.

Die allgemeine Antwort ist zu diesem Zeitpunkt, da der aktuelle Status quo: keine integrierte Möglichkeit, aber es gibt in der Tat einige Alternativen:

Option # 1: Eine lange Polling oder ähnliche Mechanismen verwenden können um es zu simulieren. Dies ist besonders praktisch, wenn Clients in einem Browser leben.

Option # 2: Wenn die Clients nicht in einem Browser gespeichert sind, empfiehlt es sich, dass der Client seinen eigenen Thrift-Server startet, damit der Server eine Verbindung zurück zum Client herstellen kann.

Option # 3: In Bezug auf @ Ruis Kommentar: Thrift ist sowohl ein Serialisierungs- als auch ein RPC-Framework. Dies bietet die Option, nur den Serialisierungsteil davon zu verwenden und die Nachrichten auf verschiedene Arten zu transportieren, auch außerhalb von Thrift RPC. Wir haben das mit Message-Bus-Systemen gemacht und es funktioniert großartig.

+0

Option 2 sieht genau nach dem aus, was ich suche. Vielen Dank :) – Artyomska

3

Da Sie Server in C#, können Sie verwenden SignalR versuchen: https://www.codeproject.com/Articles/633378/ASP-NET-SignalR-Basis-Step-by-Step-Part

Andere mehr dificult Weg ist die direkte Nutzung von Sockets: https://msdn.microsoft.com/en-us/library/w89fhyex(v=vs.110).aspx

+0

Es kann erwähnenswert sein, dass keiner Thrift enthält, aber dies sind natürlich absolut gültige Lösungen für das zugrunde liegende Problem. Um zu entscheiden, ob sie zutreffen oder nicht, obliegt es dem OP. – JensG

Verwandte Themen