# Server-Client (Web) Kommunikation



## -DuffyDuck- (3. Mrz 2010)

Hallo!

Ich weiß garnicht so recht, wie ich meine Frage richtig formulieren soll... auf jeden Fall möchte ich eine, eigentlich ganz simple, Server-Client Kommunikation programmieren. Das heißt, wenn am Server ein Ereignis eintritt soll er am Client (ein Desktop-Widget) eine Meldung absetzten. Jetzte hab ich mich schon durch etliche Tutorials durchgewühlt und finde eigentlich immer nur den Ansatz über Sockets/RMI zu gehen, was im meinem Fall eher schlecht ist da ich als Basis für den Rest der Anwendung einen Tomcat verwende (Admin UI, Daemons, DB Verbindung, etc...). Das alles wäre soweit auch kein Problem, denn letzten Endes könnte ich am Client eine Schleife einrichten die alle 5 Sek. am Server nachfrag ob's was neues gibt, nur erscheint mir dieser Weg ziehmlich "unelegant".

Was wäre der beste Weg um sowas umzusetzten?

Bitte helft mir, ich stehe sowas von am Schlauch!!

LG


----------



## FArt (3. Mrz 2010)

Spring Remoting ist immer ein Blick wert, weil die Verwendung einfach ist, in der Regel das zu verwendende Protokoll irrelevant ist und auch ausgetauscht werden kann.


----------



## -DuffyDuck- (3. Mrz 2010)

Hey danke für die schnelle Antwort!

Da werd ich mich mal einlesen....


----------



## -DuffyDuck- (4. Mrz 2010)

So, jetzt hab ich mir Spring (zumindest oberflächlich) angeschehen und... naja irgendwie bin ich, so zu sagen, mit der Gesamtsituation unzufrieden...

Vielleicht ist es auch mein Fehler und ich verfolge schlicht den falschen Ansatz, denn eigentich möchte ich nur was ganz simples: Ein Server hat einen Daemon laufen, der im schaut wieviele Dateien in einem Ordner liegen, dokumentiert das in einer DB und liefert das Ergebniss "live" an ein Desktop-Miniprogramm (bzw. ein Widget oä). Die einzigen technischen Bedingungen sind, dass das Protokoll http sein muss(der Server steht in einer DMZ), der Client soll nicht im Browser laufen, keine Installation (außer Java halt) und lokale Konfiguration benötigen und rein vom Fenster her klein sein.

Der Server selber ist kein Problem, aber der Client bzw. die Client-Server-Kommunikation treibt mich in den Wahnsinn!!

Danke, Markus


----------



## FArt (4. Mrz 2010)

Perfekt... für Spring Remoting...
Spring by examples – RMI - cosminaru blog


----------



## byte (4. Mrz 2010)

Was Du brauchst, ist Server Push. Das funktioniert aber nicht ohne weiteres mit den meisten auf HTTP basierten Protokollen. FArts Tipp bezieht sich auf RMI, was aber für Dich flach fällt, weil Du dann Port Probleme kriegst.

Der einfachste Weg ist, den Server Push einfach per Polling zu simulieren (was Dir ja schon selbst eingefallen ist). Ansonsten kannst Du Dir auch mal die Comet Lib angucken. Darüber hinaus soll ja die JEE 7 Servlet Spec Server Push können, aber das dauert wohl noch etwas.


----------



## FArt (4. Mrz 2010)

Ja, da habe ich noch was vergessen... Server spricht zu Client... *G*, da hat byte natürlich Recht. Der Link sollte verdeutlichen, wie einfach Remoting mit Spring ist.
Man könnte JMS verwenden, um die Clients zu benachrichtigen, dass etwas zur Abholung bereit steht.


----------



## tuxedo (4. Mrz 2010)

Info am Rand:

Noctarius hat meine SIMON Implementierung auf Spring adaptiert. Und SIMON beherrscht den Umgang mit HTTP-Proxies. Damit kommt man eigentlich in den meisten Fällen durch.

- Alex


----------



## ARadauer (4. Mrz 2010)

> und liefert das Ergebniss "live" an ein Desktop-Miniprogramm (bzw. ein Widget oä).


nein... es ist einfacher, wenn sich der client das ergebnis abhohlt...


----------



## tuxedo (4. Mrz 2010)

ARadauer hat gesagt.:


> nein... es ist einfacher, wenn sich der client das ergebnis abhohlt...



Ich glaube er wollte damit ausdrücken dass der Client erst tätig wird wenn das "Event" vom Server da ist. Alles andere wäre ja ein Polling was offensichtlich nicht gewünscht ist, oder?!

- Alex


----------

