java - server sent event using jsp not working -
i want achieve server sent events using jsp it's not working, code given below not displaying date
date.jsp
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %> <% response.setcontenttype("text/event-stream;charset=utf-8"); response.setheader("cache-control", "no-cache"); response.setheader("connection", "keep-alive"); %> <% date date = new date(); out.write(+date.tostring()+); out.flush(); try { thread.currentthread().sleep(5000); } catch (interruptedexception e) { e.printstacktrace(); } %> and ex.html code fallows
<!doctype html> <html> <body> <h1>getting server updates</h1> <div id="result"></div> <script> if(typeof(eventsource)!=="undefined") { var source=new eventsource("date.jsp"); source.onmessage=function(event) { document.getelementbyid("result").innerhtml+=event.data + "<br>"; }; } else { document.getelementbyid("result").innerhtml="sorry, browser not support server-sent events..."; } </script> </body> </html> output is:
getting server updates
not displaying date also...
i using tomact server,is there problem in code
you should use runnable body onload or button onclick listeners, should use correct path jsp or servlet(placed not inside web-inf folder), should use correct event data format, "data:" prefix , "\n\n" suffix.
ex.html
<!doctype html> <html> <body onload = registersse()> <h1>getting server updates</h1> <div id="result"></div> <script> function registersse() { alert("wtf"); if(typeof(eventsource) != "undefined") { var source = new eventsource ("http://localhost:8080/web_war_exploded/date.jsp"); source.onmessage = function(event) { document.getelementbyid("result").innerhtml += event.data + "<br/>"; }; } else { document.getelementbyid("result").innerhtml = "sorry, browser not support server-sent events..."; } } </script> </body> </html> date.jsp
<% response.setcontenttype("text/event-stream;charset=utf-8"); response.setheader("cache-control", "no-cache"); response.setheader("connection", "keep-alive"); date date = new date(); out.write("event: server-time\n\n"); out.write("data: "+date.tostring() + "\n\n"); out.flush(); try { thread.currentthread().sleep(5000); } catch (interruptedexception e) { e.printstacktrace(); } %> and after should use google, question nothing new, please see links below:
java-servlet-and-server-sent-events
Comments
Post a Comment