Ich habe da ein problem, und ich verstehe nciht, woran das liegen könnte. Ich habe diese Frage so ähnlich schon in einem VaadinForum gestellt, aber es gab da nen halben Monat lang keine antwort.
Ich habe folgendes vor. Ich habe einen CLienten, der eine Nachricht bzw. Nachrichten an einen Server schreibt. Immer wenn die Nachrichten eintreffen, dann soll über einen Eventbus ein Event gesendet werden, das dann mein Vaadin Wndo - diesmal habe ich es mit Vaadin 6 gemacht bekommt, und dann soll das Event bzw. die in dem Event transportierte Message über eine Notification ausgegeben werden.
Also was da verkehrt sein kann, weiß ich nciht, ich habe da noch Kommentare geschrieben, ich poste mal den Code anbei:
Ich habe folgendes vor. Ich habe einen CLienten, der eine Nachricht bzw. Nachrichten an einen Server schreibt. Immer wenn die Nachrichten eintreffen, dann soll über einen Eventbus ein Event gesendet werden, das dann mein Vaadin Wndo - diesmal habe ich es mit Vaadin 6 gemacht bekommt, und dann soll das Event bzw. die in dem Event transportierte Message über eine Notification ausgegeben werden.
Also was da verkehrt sein kann, weiß ich nciht, ich habe da noch Kommentare geschrieben, ich poste mal den Code anbei:
Java:
package com.example.vaadin6scratch;
import java.net.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.io.*;
public class MainServer extends Thread
{
private ServerSocket serverSocket;
private HashMap<String,Socket> dispatch = new HashMap<String,Socket>();
private BufferedReader br = null;
private BufferedWriter bw = null;
public MainServer(int port) throws IOException
{
EventBusFactory.getEventBusInstance().register(this);
serverSocket = new ServerSocket(port);
//serverSocket.setSoTimeout(10000);
}
public void run()
{
while(true)
{
try
{
Socket server = serverSocket.accept();
try{
br = new BufferedReader(new InputStreamReader(new DataInputStream(server.getInputStream())));
String message = br.readLine(); //--> Bis hierher habe ich mich schon debuggt, er kommt soweit, aber das mit dem Message ausgeben durch die Notifivation, das klappt nicht so recht. Hat d jemand eine Idee, woran das liegen könnte?
///Hier soll er posten.
EventBusFactory.getEventBusInstance().post(new EventBroadcastEvent(message));
}catch(IOException e){e.printStackTrace();}
}catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
public static void main(String [] args)
{
try
{
Thread t = new MainServer(8754);
t.start();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
Java:
package com.example.vaadin6scratch;
import java.io.*;
import java.net.*;
import com.google.common.eventbus.Subscribe;
import com.vaadin.Application;
import com.vaadin.ui.*;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Window.Notification;
/**
* Main application class.
*/
public class Vaadin6scratchApplication extends Application {
Socket client = null;
DataOutputStream out = null;
BufferedWriter bw = null;
public Vaadin6scratchApplication(){
EventBusFactory.getEventBusInstance().register(this);
}
@Subscribe
private void readIncomingMessages(EventBroadcastEvent e){
getMainWindow().showNotification(e.getMessage());
}
private void write(String towrite){
try {
client = new Socket("127.0.0.1", 8754);
out = new DataOutputStream(client.getOutputStream());
bw = new BufferedWriter(new OutputStreamWriter(out));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
bw.write(towrite);
bw.flush();
//bw.close();
}catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void init() {
Window mainWindow = new Window("Vaadin6scratch Application");
Button b = new Button("write");
b.addListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
write("New Message\n");
}
});
mainWindow.addComponent(b);
setMainWindow(mainWindow);
}
}