2012-08-29 3 views
6

Ich versuche, eine Seite zu erstellen, die das EvenSource-Objekt (in JavaScript) verwendet, um ein Server gesendetes Ereignis (Comet) zu erstellen. Ich lese viele Tutorials über sie und haben nicht einen gefunden, der die folgenden Fragen erklärt:Fehlerbehandlung in EventSource

  1. Wenn ich abonniere den „onerror“ Ereignis des Eventsource - was ist der Typ des Parameters i bekommen? Woher weiß ich genau, was der Fehler war?

  2. Ich weiß, dass EvenSource einen ReadyState hat und dass es sich abhängig vom Browser ändert. Warum ändert sich mein Bereitschaftszustand nach jedem "onmessage" -Ereignis auf 0? (Ich benutze Chrom).

  3. Wie kann ich beweisen, dass meine Verbindung mit dem Server verbunden bleibt und nicht jedes Mal neu verbunden wird?

Browser: Chrome.

Server Side:.. Java (wenn es relevant ist das Beispiel i in Java EE Vorschau gemacht ist aber ich werde auf WebLogic 10R3 arbeiten

Was in meinem Beispiel passiert ist, dass die gespeicherten Daten ist vom Server an den Client gesendet, als die „onerror“ Ereignis eintritt (Readystate ist 0) und nach 3 Sekunden (Standard für Chrom) es schließt wieder und sendet die Daten erneut

der JavaScript-Code.

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

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

Der Java-Code:

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

Wenn es noch etwas fehlt, das Sie wissen möchten - sagen Sie mir. Hoffe, du wirst mir helfen können.

Danke!

Antwort

3

Sie müssen die Verbindung auf dem Server halten, anstatt darauf zu reagieren und zu schließen.

Bitte siehe http://jcp.org/en/jsr/detail?id=315 oder Glassfish/Grizzly/Jetty Server.