soundsgood
31-03-2010, 15:47
ciao ragazzi,
sto cercando di fare un meccanismo di refresh di una pagina web nel seguente modo:
La pagina web "index.html" contiene una applet Java che rimane in ascolto su un socket (multicast) ed aspetta che le arrivi un messaggio. Quando il messaggio arriva, la applet fa il refresh della pagina web "index.html" tramite il comando:
"getAppletContext().showDocument(getDocumentBase());"
Per la cronaca, il messaggio(che la applet aspetta) è inviato(tramite socket) alla applet tramite una classe java avviata dal prompt.
Se testo la applet tramite il comando "appletviewer index.html"(dal prompt)vedo che la comunicazione funziona e il messaggio arriva (perche lo vedo tramite dai System.out.println(...) piazzati prima e dopo il comando di refresh all'interno del codice della applet, anche se non posso vedere se funziona il di refresh, perche per vederlo devo far girare la pagina sul browser).
Invece se faccio girare la applet sul browser vedo che il refresh non funziona ( in questo caso le stampe dai System.out.println(...) non posso utilizzarle per vedere se arriva il messaggio perche sul browser non vengono stampate come è giusto che sia).
Vorrei che il refresh sul browser funzionasse.
Forse è una questione di focus della applet che non rimane attiva mentre invio i messaggi dal prompt..
Tralaltro ho provato a mettere il codice dentro il metodo "init()" o nel metodo "start()" della applet ma non cambiano le cose.
Sapete risolvere questa cosa?
Vi posto il codice dell'applet:
public class ClassApplet extends Applet{
public void init() {
super.init();
//getAppletContext().showDocument(url);
//System.out.println("reindirizzamento");
try {
socket = new MulticastSocket(5009);
}
catch (IOException e) {
e.printStackTrace();
}
try {
System.out.println("Eseguito public void start()");
InetAddress group = InetAddress.getByName("230.0.0.9");
System.out.println("Eseguito inet");
socket.joinGroup(group);
System.out.println("joingroup");
byte[] buf = new byte[255];
DatagramPacket packet;
System.out.println("datagram");
packet = new DatagramPacket(buf, buf.length);
while(true) {
System.out.println("");
System.out.println("");
System.out.println("while");
System.out.println("Attesa dal server");
socket.receive(packet);
String received = new String(packet.getData());
String messaggio = received.substring(0,3);
if(messaggio.equals("ref")) {
System.out.println("ref ricevuto");
getAppletContext().showDocument(getDocumentBase());
}
}
}
catch (Exception e) {
e.printStackTrace();
socket.close();
}
}
}
sto cercando di fare un meccanismo di refresh di una pagina web nel seguente modo:
La pagina web "index.html" contiene una applet Java che rimane in ascolto su un socket (multicast) ed aspetta che le arrivi un messaggio. Quando il messaggio arriva, la applet fa il refresh della pagina web "index.html" tramite il comando:
"getAppletContext().showDocument(getDocumentBase());"
Per la cronaca, il messaggio(che la applet aspetta) è inviato(tramite socket) alla applet tramite una classe java avviata dal prompt.
Se testo la applet tramite il comando "appletviewer index.html"(dal prompt)vedo che la comunicazione funziona e il messaggio arriva (perche lo vedo tramite dai System.out.println(...) piazzati prima e dopo il comando di refresh all'interno del codice della applet, anche se non posso vedere se funziona il di refresh, perche per vederlo devo far girare la pagina sul browser).
Invece se faccio girare la applet sul browser vedo che il refresh non funziona ( in questo caso le stampe dai System.out.println(...) non posso utilizzarle per vedere se arriva il messaggio perche sul browser non vengono stampate come è giusto che sia).
Vorrei che il refresh sul browser funzionasse.
Forse è una questione di focus della applet che non rimane attiva mentre invio i messaggi dal prompt..
Tralaltro ho provato a mettere il codice dentro il metodo "init()" o nel metodo "start()" della applet ma non cambiano le cose.
Sapete risolvere questa cosa?
Vi posto il codice dell'applet:
public class ClassApplet extends Applet{
public void init() {
super.init();
//getAppletContext().showDocument(url);
//System.out.println("reindirizzamento");
try {
socket = new MulticastSocket(5009);
}
catch (IOException e) {
e.printStackTrace();
}
try {
System.out.println("Eseguito public void start()");
InetAddress group = InetAddress.getByName("230.0.0.9");
System.out.println("Eseguito inet");
socket.joinGroup(group);
System.out.println("joingroup");
byte[] buf = new byte[255];
DatagramPacket packet;
System.out.println("datagram");
packet = new DatagramPacket(buf, buf.length);
while(true) {
System.out.println("");
System.out.println("");
System.out.println("while");
System.out.println("Attesa dal server");
socket.receive(packet);
String received = new String(packet.getData());
String messaggio = received.substring(0,3);
if(messaggio.equals("ref")) {
System.out.println("ref ricevuto");
getAppletContext().showDocument(getDocumentBase());
}
}
}
catch (Exception e) {
e.printStackTrace();
socket.close();
}
}
}