2012-08-29 26 views
6

Sto tentando di creare una pagina che utilizza l'oggetto EvenSource (in javascript) per creare un evento inviato dal server (cometa). Ho letto molti tutorial su di esso e non ho trovato uno che spiega le seguenti domande:Gestione degli errori in EventSource

  1. se mi iscrivo alla manifestazione "onerror" del EventSource - qual è il tipo di parametro ottengo? Come faccio a sapere esattamente qual era l'errore?

  2. So che EvenSource ha uno stato pronto e che cambia in base al browser. Perché il mio stato predefinito diventa 0 dopo ogni evento "onmessage"? (io uso Chrome).

  3. Come posso dimostrare che la mia connessione al server rimane connessa e non si riconnette ogni volta?

Browser: Chrome.

Server Side:.. Java (se è rilevante l'esempio che ho fatto è in Java EE anteprima ma ho intenzione di lavorare su WebLogic 10R3

Cosa succede nel mio esempio è che i dati vengono inviato dal server al client, che si verifica l'evento "onerror" (readystate è 0) e dopo 3 secondi (di default per Chrome) si riconnette e invia nuovamente i dati

il codice JavaScript:.

var source = new EventSource("TrySRV"); 
source.onmessage = function(event){ 
    alert(event.data); 
} 

source.onerror = function(event){ 
    alert(source.readystate); 
} 

Il codice Java:

response.setHeader("Content-Type", "text/event-stream"); 
response.setHeader("Cache-Control", "no-cache"); 
response.getWriter.write("Hello World"); 

Se manca qualcosa che desideri sapere - dimmi. Spero che tu possa aiutarmi.

Grazie!

risposta

3

È necessario mantenere la connessione sul server, anziché rispondere su di esso e chiudere.

Vedere server http://jcp.org/en/jsr/detail?id=315 o Glassfish/Grizzly/Jetty.