我正在尝试实现HTML 5 SSE功能。为此,我需要保持响应流长时间打开。现在我的实现如下。
@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小时。我知道暂停线程不是好方法。
我想知道为什么即使在返回调用servlet后我仍可以保持PrintWriter保持打开状态?或者是否有任何不同的方法来实现这种效果?