Hi
Ich habe mir Server-Sent Events angeschaut und bringe es leider nicht zum laufen. Hier mal mein Code:
sowie Serverseitig die myEventsWriter.jsp:
Der Output dieser Datei ist dann folgender:
Das ganze habe ich dem obigen Link entnommen und führe es unter Chrome 11 aus (Unter Firefox und IE ist das noch nicht implementiert). Serverseitig ists ein Tomcat 6. Trotzdem tut sich nichts! Kann mir jemand dabei helfen dies zum laufen zu bringen?
Oder wie der Titel schon sagt, kennt jemand eine andere Möglichkeit vom Server aus den Client an zu sprechen? Stichwort Web-Socket, HTTP Push oder ein XMLHttpRequest das offen bleibt und man Serverseitig immer wieder was reinschreiben kann (Wobei man dann im JavaScript irgendwie darauf reagieren können sollte).
Am besten natürlich was, was in den aktuellen Browern funktioniert (Auf Abwärtskompatibilität setzt ich bei dem jetzt keinen Wert).
Was ich genau machen will ist vom Server aus Attribute an eine JavaScript Funktion zu übergeben ohne dass ich vorher genau weiss wann sich diese Attribute ändern. (Die einfache Alternative wäre dann wohl einfach immer wieder ein HttpRequest zu stellen und die Attribute neu Abfragen. Auch hier eine Frage, wie stark dürfte ich diese Schleife takten? Würden 500milisec gehen?)
Grüsse und vielen Dank für eure Hilfe und Ideen
jeipack
Ich habe mir Server-Sent Events angeschaut und bringe es leider nicht zum laufen. Hier mal mein Code:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>myEventListener</title>
<script type="text/javascript">
document.getElementsByTagName("eventsource")[0].addEventListener("server-time", eventHandler, false);
function eventHandler(event)
{
// Alert time sent by the server
document.getElementById('ticker').innerHTML = event.data;
}
</script>
</head>
<body>
<div id="sse">
<eventsource src="myEventsWriter.jsp" />
</div>
<div id="ticker" name="ticker">
[TIME]
</div>
</body>
</html>
sowie Serverseitig die myEventsWriter.jsp:
HTML:
<%@page language="java" contentType="text/event-stream; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" %>
<%
int i=0;
while(i++<2) {
out.println("Event: server-time");
out.println("Data: "+new java.util.Date());
out.println("");
Thread.sleep(2000);
}%>
Der Output dieser Datei ist dann folgender:
Code:
Event: server-time
Data: Mon May 02 17:48:52 CEST 2011
Event: server-time
Data: Mon May 02 17:48:54 CEST 2011
Das ganze habe ich dem obigen Link entnommen und führe es unter Chrome 11 aus (Unter Firefox und IE ist das noch nicht implementiert). Serverseitig ists ein Tomcat 6. Trotzdem tut sich nichts! Kann mir jemand dabei helfen dies zum laufen zu bringen?
Oder wie der Titel schon sagt, kennt jemand eine andere Möglichkeit vom Server aus den Client an zu sprechen? Stichwort Web-Socket, HTTP Push oder ein XMLHttpRequest das offen bleibt und man Serverseitig immer wieder was reinschreiben kann (Wobei man dann im JavaScript irgendwie darauf reagieren können sollte).
Am besten natürlich was, was in den aktuellen Browern funktioniert (Auf Abwärtskompatibilität setzt ich bei dem jetzt keinen Wert).
Was ich genau machen will ist vom Server aus Attribute an eine JavaScript Funktion zu übergeben ohne dass ich vorher genau weiss wann sich diese Attribute ändern. (Die einfache Alternative wäre dann wohl einfach immer wieder ein HttpRequest zu stellen und die Attribute neu Abfragen. Auch hier eine Frage, wie stark dürfte ich diese Schleife takten? Würden 500milisec gehen?)
Grüsse und vielen Dank für eure Hilfe und Ideen
jeipack