gpt4 book ai didi

jakarta-ee - AsyncContext 和 I/O 错误处理(当对等断开连接时)

转载 作者:行者123 更新时间:2023-11-28 21:49:17 26 4
gpt4 key购买 nike

我正在使用 Servlet 3.0 的 javax.servlet.AsyncContext 实现服务器发送的事件界面。

但是我不明白我应该如何处理 I/O 错误,例如 peer disconnect。

对于给定的 AsyncContext ac = request.startAsync(),我可以调用 ac.getResponse().getWriter().print(something) 然后 ac.getResponse.getWriter().flush() 并且工作正常。但是,当客户端断开连接时,我不会收到错误 - 即使我附加了一个监听器,它的 onError 方法也不会被调用。

我用 Jetty 8 和 Tomcat 7 测试了它,似乎与客户端的断开连接没有报告回应用程序。

如何检测通信错误?

最佳答案

问题在于:ac.getResponse.getWriter().flush() 不会抛出 IOException

因此,为了在 I/O 操作时获得错误通知,您需要改用 ServletOutputStream:

try {
ServletOutputStream out = ac.getResponse().getOutputStream();
out.print(stuff);
out.flush(); // throws IOException
}
catch(IOException e) {
// handle a error
}

关于jakarta-ee - AsyncContext 和 I/O 错误处理(当对等断开连接时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12039939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com