Java servlet und server gesendeten Ereignisse
Ist es möglich einen server gesendet, Falle der Verwendung von java servlets, so dass ein client könnte erhalten updates über:
<script>
var source = new EventSource('/events');
source.onmessage = function(e) {
document.body.innerHTML += e.data + '<br>';
};
</script>
Alle Beispiele die ich gefunden habe, auf dem web mit PHP, aber ich würde davon ausgehen, dass es funktionieren sollte mit Java HTTP Servlet.
Sie sind auf der Suche für die HTML5-Funktion "Server-Sent Events" - richtig? today.java.net/article/2010/03/31/...
ja.. und das Ereignis erstellt werden soll über ein java-servlet
Servlets können nur annehmen eines eingehenden HTTP-request. Sie sind nicht entworfen, um eine Verbindung zu öffnen. Sie können es tun, aber ich gehe davon aus, dass Ihre server laufen sehr schnell aus worker-threads, wenn Sie das tun.
Servlets können halten Sie die Verbindung offen-nur nicht wieder aus der doGet/doPost-Methoden (und offensichtlich auch nicht manuell schließen Sie alle streams). Aber wie Robert schon sagte, Sie haben in der Regel einen begrenzten pool von verbindungen, die Sie von Ihrem web-server. Sobald Sie laufen, können Sie nicht verarbeiten, die keine neuen verbindungen, bis Sie anfangen zu schließen, die alten.
Dies kann helfen. blog.maxant.co.uk/pebble/2011/06/21/1308690720000.html
ja.. und das Ereignis erstellt werden soll über ein java-servlet
Servlets können nur annehmen eines eingehenden HTTP-request. Sie sind nicht entworfen, um eine Verbindung zu öffnen. Sie können es tun, aber ich gehe davon aus, dass Ihre server laufen sehr schnell aus worker-threads, wenn Sie das tun.
Servlets können halten Sie die Verbindung offen-nur nicht wieder aus der doGet/doPost-Methoden (und offensichtlich auch nicht manuell schließen Sie alle streams). Aber wie Robert schon sagte, Sie haben in der Regel einen begrenzten pool von verbindungen, die Sie von Ihrem web-server. Sobald Sie laufen, können Sie nicht verarbeiten, die keine neuen verbindungen, bis Sie anfangen zu schließen, die alten.
Dies kann helfen. blog.maxant.co.uk/pebble/2011/06/21/1308690720000.html
InformationsquelleAutor Chris | 2011-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
dies funktioniert der trick.
HTML
Servlet :
verwendete jdk 1.6.0_24, ich benutzt tomcat, und es funktionierte perfekt in Ordnung. Prüfen Sie auch, ob in Ihrem browser die Funktion 'sse'. vorzugsweise chrome verwenden oder die neueste version von firefox.
Ich erhalte eine Fehlermeldung "EventSource' s Antwort hat einen Zeichensatz ("iso-8859-1"), die nicht UTF-8. Abbruch der Verbindung.", die ich denke, war die Standard-Kodierung. Hinzufügen
response.setCharacterEncoding ( "UTF-8" );
bitte @frewper Sie den code in Ihre Antwort ist nicht, mit mir zu arbeiten. Ich erstelle die beiden Dateien, aber ich Frage, ob ich sollte einige Bibliotheken ?? bitte um Antwort
bitte posten ur Fehler?
InformationsquelleAutor frewper
Server-Sent Events ist ein HTML5-feature. Wir sagen "HTML5" ist, es ist einfach client-side-Funktion.
So lange server kann festlegen https-respnse-header "text/event-stream;charset=UTF-8","Connection", "keep-alive", dann ist es Unterstützung durch den server. Sie können festlegen, wie header mit Java-Servlet.
Hier finden Sie eine Schritt für Schritt Anleitung, SSE mit servlet
InformationsquelleAutor user1987452
Habe ich eine sehr einfache Bibliothek, die integriert werden können, in plain Java Servlets im Asynchronen Modus, so dass keine zusätzliche server-threads sind erforderlich für jeden client: https://github.com/mariomac/jeasse
Integriert die SseDispatcher (für Punkt-zu-Punkt-SSEs) und SseBroadcaster (für übertragung von Events). Ein Beispiel für die Verwendung:
Im wesentlichen habe ich abgeholt "zufällig" eine Lizenz, die frei verwendet werden können, ohne Einschränkungen im Hinblick auf die abgeleiteten code. Empfehlen Sie mir eine andere zu verwenden? Gibt es keine Nachteile in der LGPL?
In Bezug auf die business-freundlich, Apache 2 ist weniger viral in Bezug auf die Einschränkungen, die Orte, auf die Menschen, die es verwenden, in Produkte, etc.
InformationsquelleAutor Mario