我想實現HTML 5 SSE功能打開。爲此,我需要保持響應流持續很長時間。現在我的實現如下。飼養的servlet流而不會阻塞線程工作
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/event-stream");
resp.setCharacterEncoding("UTF-8");
PrintWriter pw = resp.getWriter();
Broadcaster.add(pw);
try {
Thread.sleep(1000*60*60);
} catch (InterruptedException ex) {
Logger.getLogger(TestServelet.class.getName()).log(Level.SEVERE, null, ex);
}
Broadcaster.remove(pw);
}
我上面的代碼我正在讓線程睡1小時,這樣我就可以讓PrintWriter打開1小時。我知道暫停線程不是好方法。
我想知道有沒有更好的,爲什麼在那裏我可以保持打開的PrintWriter返回甚至調用servlet的後?或者有什麼不同的方法來達到這個效果?
退房的Servlet 3.0 [異步Servlet的功能(http://www.javacodegeeks.com/2013/08/async-servlet-feature-of-servlet-3.html) 。 –
@SotiriosDelimanolis看起來像這樣會有所幫助。將嘗試一下。 –