Ajax request auf anderen port

Hi alle, ich mir letztens einen Chat zusammengebaut. Der Server in Java und die Clients in C#, funktioniert auch alles, nur wollte ich jetzt auch noch nen client für den Browser basteln und hab mich dafür fürs GWT entschieden.
Zuerst hatte ich geplant die Sofort-Chat Nachrichten einfach statt sie in den NetzwerkStream zu schieben in die MySQL datenbank zu schreiben und im sekundentakt über ein php skript abzurufen was aber rein perfomancemäßig bedenklich ist. Die Web-Browser Clients sollen sich jetzt über einen extra java-server auf dem hauptserver anmelden der genau wie bei den normalen c#-clients die sockets und streams speichert. Wenn eine Nachricht ankommt schickt er sie auch bei den Browser Clients in den Stream - das gegenstück wartet noch beim extra server. Am einfachsten wärs natürlich auf den port des extra servers eine Request zu stellen, geht des? Eine andere Möglichkeit die mir noch eingefallen ist wäre einfach von anfang an nen zweiten modifizierten web-server - zB jetty??? - auf nen hohen port zu setzten und von da an die website aufrufen. Oder gäbs da noch ne bessere Möglichkeit?
Vielen dank schon mal im Vorraus
thedafelix

Hi,
möchtest du die Chat-Nachrichten dauerhaft sichern? Wenn nicht, dann brauchst du keinen MySQL Datenbank. Du könntest die ankommenden Nachrichten auf dem Server im Speicher halten. Diese Nachrichten ordnest du jedem Nutzer zu.

Wenn du mit den Sockets (wäre natürlich die Beste Lösung) arbeiten möchtest, musst du mit Websockets arbeiten. Da habe ich leider noch gar keine Erfahrungen. Jedoch habe ich gelesen, dass die Websockets Sicherheitslücken aufweisen und deshalb bei Firefox abgeschaltet wurden. Es gibt für Websockets bereits eine GWT Lösung. So dass du es für den Datenaustausch nutzen könntest.

Die gespeicherten Nachrichten, ob im Speicher oder MySQL Datenbank, verschickst du diese dann an den neuen Chateilnehmer. Kommt eine neue Nachricht an, dann verschickst du es über die Websockets an alle Teilnehmer.

Könntest du die Frage noch einmal besser formulieren, weil ich befürchte, dass ich es nicht verstanden habe. Möchtest du, dass deine C#-Clients mit den GWT-Clients zusammen arbeiten?

Gruß
Sergej

Hi Sergej,
danke für die flotte Antwort. Zurzeit läuft des eben so ab dass auf dem Hauptserver, auf zB port 8888, die nachrichten ankommen. Der sucht dann den raum raus und holt sich hier über ne hashtable die outstreams aller clients die drin sind.

Jetzt hab ich mir gedacht dass zB auf port 8889 noch nen zweiter server läuft der dann die http requests der GWT clients versteht. Wenn sich der GWT client anmeldet schickt der nen Request mit username und pw an dern 8889 server der meldet sich dann für den GWT client am 8888 server an. Kommt jetzt eine Nachricht dann schickt der Haupt(8888)server die genau wie bei den C# clients einfach in den Stream. Wenn der GWT client jetzt wieder eine, ich nenns mal „update“ Request schickt holt der 8889 server das andere socket ende aus ner hashtable, anhand username und pw, liest die nachrichten raus und schickt die weg. Wenn jetzt keine Nachrichten drin sind wartet er halt und antwortet erst auf die Request wenn wirklich was zurück kommt - muss halt des timeout beachten.

So jetzt meine Frage, meint ihr des funktioniert so? kann ich also von port 80 den client empfangen und trotzdem ne Request auf port 8889 stellen?

lg thedafelix

Hi thedafelix,
jetzt verstehe ich es.
Also ist der GWT-Server (z.B. TomCat) nur für Weiterleitung der GWT-Client Requests an den Hauptserver zuständig.

Ja, das würde laufen. Ich würde es auch so machen. Du muss nur

Gruß
Sergej

Dann muss ich aber den ganzen client vom „8889“ server holen, oder?
thedafelix

Hallo,
ich hoffe Dir konnte jemand die Frage beantworten.
Haben in diesem Bereich keine Erfahrung und kann die
Frage somit nicht beantworten
MfG Gerd