ho appena iniziato a giocare con Server Events e mi sono imbattuto in un messaggio di errore di Chrome che vorrei capire. ho cercato il web in modo veloce ma non ho trovato una spiegazione, quindi credo che potrei fare qualcosa di terribilmente sbagliato.Come impedire net :: ERR_INCOMPLETE_CHUNKED_ENCODING quando si utilizzano eventi server HTML5 e servlet Java?
Sul lato server Ho una semplice servlet che accetta le richieste e crea un manichino compito Creatore evento:
private Executor executor = Executors.newSingleThreadExecutor();
public void doGet(final HttpServletRequest request, final HttpServletResponse response)
{
final AsyncContext asynCtx = request.startAsync(request, response);
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/event-stream");
response.setCharacterEncoding("utf-8");
executor.execute(() -> {
boolean run = true;
try
{
while (run)
{
final ServletResponse resp = asynCtx.getResponse();
run = resp != null;
if (resp != null)
{
System.out.println("pushing a server event.");
final PrintWriter writer = asynCtx.getResponse().getWriter();
writer.println("data: {time: " + System.currentTimeMillis() + "}\n");
writer.flush();
}
else
{
System.out.println("stopping beeper, no response object available anymore.");
break; // do not run anymore, we got no response
}
Thread.sleep(2000);
}
}
catch (final Exception e)
{
e.printStackTrace();
}
});
}
sul client ho semplicemente:
$(document).ready(function()
{
var source = new EventSource("/events");
source.onmessage = function (event)
{
console.log("received event: " + JSON.stringify(event));
document.getElementById("eventContainer").innerHTML += event.data + "<br/>";
};
console.log("start to receive events...")
});
quando ho caricare il file HTML funziona, gli eventi vengono ricevuti e scritti sulla console. Ma Dopo 30 secondi ottengo un messaggio di errore:
GET [HttpOfLocalhost]/eventi Net :: ERR_INCOMPLETE_CHUNKED_ENCODING
perché?
la richiesta viene uccisa e ne viene avviata una nuova immediatamente in modo da non uccidere l'applicazione ma i messaggi di errore sulla console non sono belli.
screenshot del mio console sviluppatore:
richiesta DETTAGLI/resposne:
tempistica, questo dimostra che si verifica sempre dopo 30 secondi:
Grazie!
Mi dica per favore. Ho questo errore, ma io non uso Asynk. Ho andare alla pagina e non ho questo errore. – Tsyklop