# GWT Chat anwendung



## Bettdecke (11. Mai 2011)

Hi ich habe vor kurzen mit gwt angefangen zu lehrnen und möchte gerne einen chat programmieren. 
nun hab ich das problem dass wenn ein client ne nachricht schickt die anderen davon nichts mitbekommen wie könnte ich das lösen?


----------



## SE (11. Mai 2011)

Hi und Willkommen im Java-Forum.
Leider muss ich dir den ersten Hinweis auf unsere Foren-Regeln geben. Bitte halte dich in Zukunft an die deutsche Rechtschreibung da es sehr schwer fällt einen durchweg kleingeschrieben Beitrag fehlerfrei zu lesen.

Was dein Problem an sich angeht
Vom GWT solltest du erstmal die Finger lassen. Für einen Anfänger ist das dann doch nicht das ware. Nutze lieber eine der bekannteren IDE's wie Eclipse oder NetBeans. Da kann dir viel eher geholfen werden da fast alle hier im Forum mit mindestens einem davon arbeiten. Es gibt sogar manche die beides verwenden.
Was den Chat ansich angeht : guck dir mal das hier an : http://java.seite.net/chat/index.html
Das ist zwar mitlerweile etwas veraltet und verwenden ein paar deprecated-Methoden, aber der Compiler weist dich schon an den stellen darauf hin wenn du ihn mit dem Parameter -Xlint:deprecated ausführst. Suche dann in der Doc nach den aktuellen Äquivalenten.

Und bitte : verwende nächste mal bitte erst die SuFu und Google bevor du ein altes Thema neu aufreist, denn Threads über Chat-System findest du sowohl hier, als auch auf http://www.java-forum.org sowie auch bei Google zugenüge.
Das du wegen dem GWT fragst ist verständlich, aber wie bereits erwähnte : es ist für einen Anfänger nicht wirklich geeignet.


----------



## CPoly (11. Mai 2011)

SPiKEe hat gesagt.:


> Vom GWT solltest du erstmal die Finger lassen. Für einen Anfänger ist das dann doch nicht das ware. Nutze lieber eine der bekannteren IDE's wie Eclipse oder NetBeans. Da kann dir viel eher geholfen werden da fast alle hier im Forum mit mindestens einem davon arbeiten.



Reden wir hier alle von der gleichen Sache (http://code.google.com/webtoolkit/)? Bei Abkürzungen schadet es nicht, diese auch mal auszuschreiben. GWT kommt ja mit einem Eclipse Plugin.


Zur eigentlichen Frage:

Ohne Code können wir wohl schlecht antworten. Wenn bei den anderen nichts an kommt, dann scheinst du wohl doch keinen Chat programmiert zu haben :-D.


----------



## SE (11. Mai 2011)

Also wenn ich Google nach "java gwt" frage spuckt er mir auch das GoogleWebToolkit aus ...
Wie auch auf der Code-Seite beschrieben hat das schon irgendwas mit Java zu tun *minimum 5.0* ... aber was genau er damit nun vorhat ? Weil für mich sieht das nach ner schlechten Nachmache von Google von ner IDE aus ... mehr nicht. Oder lieg ich jetzt total daneben *AUFKLÄRUNG BITTE*.


----------



## CPoly (11. Mai 2011)

SPiKEe hat gesagt.:


> Also wenn ich Google nach "java gwt" frage spuckt er mir auch das GoogleWebToolkit aus ...
> Wie auch auf der Code-Seite beschrieben hat das schon irgendwas mit Java zu tun *minimum 5.0* ... aber was genau er damit nun vorhat ? Weil für mich sieht das nach ner schlechten Nachmache von Google von ner IDE aus ... mehr nicht. Oder lieg ich jetzt total daneben *AUFKLÄRUNG BITTE*.



Du liegst absolut zu 100% daneben.



> Google Web Toolkit (GWT) is a development toolkit for building and optimizing complex browser-based applications



Du schreibst Java Code, welcher dann zu HTML, CSS und JavaScript kompiliert wird. Das hat unter anderem den Vorteil, dass du die Werkzeuge benutzen kannst, welche du als Java-Entwickler kennst (IDE, Debugger, eigene Klassen), um komplexe Webanwendungen (AJAX etc.) zu erstellen und es umgeht das schwache Typsystem von JavaScript.


----------



## SE (11. Mai 2011)

Oha ... naja da lag ich dann doch ETWAS deneben ^^ ... aber darum habe ich ja um Aufklärung gebeten.
Aber mal ganz erlich : warum mache ich mir den Aufwand etwas in Java zu programmieren nur um es dann von nem Tool von so nem Monopolisten in etwas völlig anderes umbauen zu lassen ? Also ich glaube das ist DEFINITIV der falsche weg um einen "Chat in Java" zu programmieren.


----------



## Bettdecke (11. Mai 2011)

@SPiKEe nur weil ich mit GWT anfange heißt das ja noch nicht das ein Anfänger beim programmieren bin. Ich programmiere seit 5 Jahren c/c++  und Java. Ich hab schon ein Chat in einer Java programmiert den ich über sockets realisiert habe. 
Man benutzt GWT, weil es die Arbeit erleichtert und direkt für alle gängigen Browsern das das javascript erstellt. Ohne das man auf irgendwelche besonderheiten von browsern achten muss.


Von Client zum Server ist ja kein Problem nur wie mache ich das der Server einen Broadcast an alle sendet? Weil in jeden Beispielcode aus Tutorials werden alle Funktionen nur von der Clientseite aus aufgerufen werden und reagieren auch nur auf Nutzeraktionen. 

Senden von Nachrichten an den Server

```
ChatSeviceAsync chatSevice= GWT
			.create(ChatSevice.class);
chatSevice.sende(text, new AsyncCallback<Void>() {

					@Override
					public void onFailure(Throwable caught) {
	                                        //fehermeldung ausgeben
					}

					@Override
					public void onSuccess(Void result) {
						//Chatfeld zurücksetzten
					}
					
				});
```

Meine Frage:
Wie Realisiere ich das der Server an alle Clients was sendet? und nicht nur an den der die Nachricht geschickt hat




edit: hab versucht einen Thread auf der Clientseite zu erstellen der nur damit beschäftigt ist eine empfange Methode aufzurufen. Problem hier: Man auf der Clientseite keine Threads erstellen, weil diese Seite in Javascript übersetzt wird und der Thread nicht übersetzen kann.


----------



## SE (12. Mai 2011)

Hmm ... die meisten AJAX-Chats *weil nichts anderes ist das hier* pollen den Server in regelmäßigen abständen nach neuen Nachrichten. Wenn du nun eine Nachricht versendest speichere diese durch ein Script in der DB des Servers und programmiere das Poll-Script so das es die Datensätze in der DB ausliest und zurücksendet. Dazu solltest du vielleicht in dem Script was die Nachrichten in die DB schreibt noch ein Limit setzen das nur 100 Datensätze oder so vorhanden sein dürfen. Falls es mehr sind schmeißt du die ältesten einfach raus.
Das wäre eher ein Thema fürs AJAX-Forum als für Java da das einzige was du hier mit Java machst die programmierung selbst ist die dann noch nicht mal so umgesetz werden kann wie du es gerne hättest. Darum solltest du es ambesten gleich dierekt als AJAX programmieren. Als Serversprache würde ich PHP nehmen weils dafür die meisten Hoster und Tutorials gibt ...

Wie ich bereits sagte : mir wäre es erlich gesagt zu DUMM etwas in Java zu programmieren nur ums dann in eine AJAX-App umwandeln zu lassen die dann noch nicht mal so funktioniert wie man es sich vorstellt. Da wäre ein Applet das einfachere. Zu mal es viele User gibt die JavaScript deaktiviert haben. Java dagegen ist nach dem Setup standardmäßig aktiv. Man kann es zwar auch deaktivieren, aber ich habe erlich gesagt noch keinen gesehen der das auch gemacht hat.


----------



## genodeftest (14. Mai 2011)

@SPiKEe: Es gibt auch einige Systeme ohne Java oder bei denen Java im Browser nicht aktiviert ist, Java Applets werden häufig (genau wie JavaScript) als Sicherheitsrisiko angesehen. Außerdem kann Java auf manchen Systemen nur mit Administratorrechten installiert werden, eine weitere Hürde. Für die meisten mobilen Geräte (Handys, Smartphones, Apples iPad, ...) gibt es keine Java SE, die ist aber Voraussetzung für die Ausführung von Applets.

@Bettdecke:


> Wie Realisiere ich das der Server an alle Clients was sendet? und nicht nur an den der die Nachricht geschickt hat


Liegt das Problem nur beim Client oder macht der Server auch Probleme? Ist der Server auch in JavaScript (mittels GWT)?



> hab versucht einen Thread auf der Clientseite zu erstellen der nur damit beschäftigt ist eine empfange Methode aufzurufen. Problem hier: Man auf der Clientseite keine Threads erstellen, weil diese Seite in Javascript übersetzt wird und der Thread nicht übersetzen kann.


Frage: kann das Javascript auf Client-Seite nicht auf den Empfang von Daten warten? Schau dir mal AJAX an (wie SPiKEe geschrieben hat), vieleicht lässt sich das mit GWT kombinieren.

Bringt dir http://en.wikipedia.org/wiki/Webchat#Server_software etwas?


----------



## pizza1234 (16. Mai 2011)

Hi,
wie wärs denn mit HTML5 und Websockets ? http://weevilgenius.net/2010/10/html-5-websocket-chat-demo/

Grüße
Peter


----------



## Thomas Darimont (25. Mai 2011)

Hallo,

Web-Sockets sind ne feine Sache gibts auch für GWT:
http://code.google.com/p/gwt-websockets/

Ansonsten würde ich mal nach dem Begriff: Server Push suchen.

Schau mal hier:
http://code.google.com/p/gwt-comet/
http://stackoverflow.com/questions/4526589/what-is-your-favorite-gwt-server-push-framework-library

Gruß Tom


----------

