Ich habe gerade angefangen, mit Server-Events herumzuspielen, und ich laufe auf eine Chrom-Fehlermeldung, die ich gerne verstehen würde. Ich habe das Web schnell durchsucht, aber keine Erklärung gefunden, also kann ich etwas sehr falsch machen.Wie verhindert man net :: ERR_INCOMPLETE_CHUNKED_ENCODING bei der Verwendung von HTML5 Server-Ereignissen und Java-Servlets?
Auf der Serverseite i ein einfaches Servlet haben, die Anfragen und erstellt eine Dummy-Ereignis Schöpfer Aufgabe übernimmt:
$(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...")
});
, wenn ich die Datei HTML laden: i einfach
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();
}
});
}
auf dem Client Es funktioniert gut, Ereignisse werden empfangen und auf die Konsole geschrieben. Aber nach 30 Sekunden Ich erhalte eine Fehlermeldung:
GET [HttpOfLocalhost]/events net :: ERR_INCOMPLETE_CHUNKED_ENCODING
warum?
Die Anforderung als wird getötet und eine neue wird sofort gestartet, damit es die Anwendung nicht beendet, aber Fehlermeldungen auf der Konsole sind nicht nett.
Screenshot von meinem Entwickler-Konsole:
Anfrage/resposne Details:
Timing, das zeigt, dass es immer nach 30 Sekunden auftritt:
Danke!
Sagen Sie mir bitte. Ich habe diesen Fehler, aber ich weiß nicht Asynk verwenden. Ich gehe auf die Seite und ich habe diesen Fehler. – Tsyklop