Frage

Ich habe eine App. , Das besteht aus „Manager“ und „Worker“. Derzeit leitet der Arbeiter immer die Verbindung, sagt etwas zu dem Manager und der Manager die Antwort.

Da gibt es eine Menge Kommunikation zwischen dem Manager und dem Arbeiter, ich überlege, eine Buchse zwischen den beiden offen haben und die Kommunikation zu tun. Ich hoffe, auch die Interaktion von beiden Seiten zu initiieren - ermöglicht den Manager etwas für den Arbeiter zu sagen, wann immer er will.

Aber ich bin ein wenig verwirrt darüber, wie man mit „Kollisionen“ beschäftigen. Sprich, entscheidet der Manager etwas an die Arbeitnehmer zu sagen, und zugleich entscheidet der Arbeiter etwas mit dem Manager zu sagen. Was wird passieren? Wie sollte eine solche Situation umgegangen werden?

P. S. Ich plane Netty für die tatsächliche Umsetzung zu verwenden.

War es hilfreich?

Lösung

„Ich hoffe, auch die Interaktion von beiden Seiten zu initiieren -. So dass der Manager etwas für den Arbeiter sagen, wann immer er will“

Einfache Antwort. Nicht.

Lernen Sie von bestehenden Protokollen: Haben Sie einen Client und einen Server. Die Dinge werden gut trainieren. Worker kann der Server sein, und der Manager kann ein Client sein. Manager können zahlreiche Anfragen machen. Arbeitnehmer reagiert auf die Anforderungen, wie sie ankommen.

Peer-to-Peer kann ohne wirklichen Wert für Komplexität komplex sein.

Andere Tipps

ich für einen persistenten bidirektionalen Kanal zwischen Server und Client gehen würde.

Wenn alles, was Sie haben müssen, ist ein Server und ein Client, dann gibt es keine Kollision Problem ... Wenn der Server eine Verbindung akzeptiert, es weiß, dann ist es der Kunde und umgekehrt. Beide können auf demselben Socket lesen und schreiben.

Wenn Sie nun mehrere Clients und dem Server Bedürfnisse haben eine Anfrage speziell auf Client-X zu schicken, dann müssen Sie auf Handshaking

Wenn ein Client gestartet, es mit dem Server verbindet. Sobald diese Verbindung hergestellt ist, sich die Client identifiziert als Client wobei X (die Handshake-Nachricht). Der Server jetzt weiß, dass es eine Steckdose muss offen Client X und jedes Mal, es muss eine Nachricht an Client-X schicken, es, dass die Buchse wieder verwendet.

Sie haben Glück, ich habe gerade ein Tutorial geschrieben (Beispielprojekt enthalten) auf diese genaue Problem. Mit Netty! :)

Hier ist der Link: http: // bruno. linker45.eu/2010/07/15/handshaking-tutorial-with-netty/

Beachten Sie, dass in dieser Lösung, der Server nicht versuchen, den Client zu verbinden. Es ist immer der Kunde, der mit dem Server verbindet. Wenn Sie eine Steckdose über das Öffnen jedes Mal, wenn Sie eine Nachricht senden wollten gedacht haben, sollten Sie persistente Verbindungen überdenken, da sie den Aufwand für den Verbindungsaufbau vermeiden, damit die Datenübertragungsrate N-fach beschleunigt.

Ich glaube, Sie an Steckdosen lesen, müssen ....

Sie erhalten nicht wirklich diese Art von Problemen .... Anders als wie beiden Empfänge zu reagierend handhaben und Senden, in der Regel geschieht dies durch Ihre Kommunikation Einfädeln ... auf der App ab, die Sie eine Reihe von Ansätzen nehmen dies.

Die richtige Verbindung zum Handshake / Netty Tutorial in brunodecarvalho Antwort erwähnt ist http://bruno.factor45.org/blag/2010/07/15/handshaking-tutorial-with-netty/
Ich würde dies als Kommentar auf seine Frage hinzufügen, aber ich habe nicht das erforderliche Minimum Ruf, dies zu tun.

Wenn Sie das Gefühl, das Rad neu zu erfinden und nicht wollen, Middleware verwenden ...

Gestalten Sie Ihr Protokoll, so dass die anderen Peer-Antworten auf Ihre Anfragen sind immer leicht zu unterscheiden von Anfragen von anderen Peer. Dann Ihre Netzwerk-I / O-Strategie sorgfältig auswählen. Was auch immer Code ist verantwortlich für die aus der Steckdose zu lesen muss zunächst festzustellen, ob die eingehenden Daten eine Antwort auf Daten, die gesendet wurden, oder wenn es eine neue Anforderung des Peer (Blick auf den Header-Daten, und ob Sie haben eine Anfrage ausgegeben vor kurzem). Außerdem müssen Sie die richtige Warteschlange zu halten, so dass, wenn Sie Antworten auf die Peer Wünsche senden Sie es richtig von neuen Anfragen getrennt ist Sie erteilen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top