KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have registered a typical SSE when page loads: Client: sseTest: function(){ var source = new EventSource('mySSE'); source.onopen = function(event){ console.log("eventsource opened!"); }; source.onmessage = function(event){ var data = event.data; console.log(data); document.getElementById('sse').innerHTML+=event.data + "<br />"; }; } My Javascript-Debugger says, that "eventsource opened!" was successfully. My Server Code is a Servlet 3.0: import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns={"/mySSE"}, name = "hello-sse", asyncSupported=true) public class MyServletSSE extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/event-stream"); resp.setCharacterEncoding("UTF-8"); Random random = new Random(); PrintWriter out = resp.getWriter(); //AsyncContext aCtx = req.startAsync(req, resp); //ServletRequest sReq = aCtx.getRequest(); String next = "data: " + String.valueOf(random.nextInt(100) + 1) + "\n\n"; //out.print("retry: 600000\n"); //set the timeout to 10 mins in milliseconds out.write(next); out.flush(); // do not close the stream as EventSource is listening //out.close(); //super.doGet(req, resp); } } The code works! The Client-Code triggers the doGet()-Method every 3 seconds and retrieves the new data. Questions: However, I wonder how I can make this code better by using new Servlet 3.0 Futures such as Async-Support or asyncContext.addListener(asyncListener) or something else which I do not know. As I never closes the stream, I wonder how my server wil
Tags (comma-separated)
Save Edits
Cancel