SS3*_*SS3 6 java sockets tomcat asynchronous servlets
我一直在玩Tomcat 7.0.4的新Servlet 3.0异步功能.我找到了这个聊天应用程序,它允许客户端挂起GET请求以获取消息更新.在接收消息时这很好用.
当客户端断开连接时,即用户关闭浏览器时,会出现问题.IOException即使客户端断开连接,服务器似乎也没有引发.消息线程(参见上面链接的源代码)很乐意写入所有存储AsyncContext的输出流.
这是Tomcat的错误吗?或者我在这里遗失了什么?如果这不是一个错误,那么我应该如何检测客户端是否已关闭连接?
第 44 - 47 行的代码正在处理它,
} catch(IOException ex) {
System.out.println(ex);
queue.remove(ac);
}
Run Code Online (Sandbox Code Playgroud)
这里也是 75 - 83,使用超时机制,
req.addAsyncListener(new AsyncListener() {
public void onComplete(AsyncEvent event) throws IOException {
queue.remove(ac);
}
public void onTimeout(AsyncEvent event) throws IOException {
queue.remove(ac);
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:有了更多的了解之后。
setAsyncTimeout()我努力尝试,但在文档中找不到该方法,无论是here还是here。所以,我认为由于某些未知的正当原因,他们在最终版本中完全放弃了它所以,在结合所有这些事实之后,我可以说,你正在尝试处理某种意义上被破坏的东西。这也可能是导致不同且奇怪的结果的原因。
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |