Java的HttpServletResponse没有isClientConnected方法

我正在使用java servlet实现一个长轮询http连接。

我怎么知道http客户端在任何情况下都仍然有效? 目前,我所做的是将一个字节写入输出流并刷新数据。 如果存在IOexception,则客户端已经死亡。

但是在ASP.NET中有一个属性Response.IsClientConnected ,可以查看客户端是否处于活动状态而不向输出流写入任何内容。

我想知道如何在java servlet中开发。 我不想继续将数据写入http响应流,因为它可能会花费网络成本。

提前致谢。

使用Servlet API很难实现这一点。 虽然低级别的Socket API提供此function( Socket.isConnected() ),但是通过任何更高级别的API都无法使用相同的function。 不确定是否有使用Servlet API的强制措施,或者您可以使用低级套接字API。

也许你采取了错误的做法? 开发HTTP协议以用于请求 – 响应样式,它不适合用于长轮询。 实际上,在客户端获得服务器响应之前应该尽可能延迟。

你所描述的案例看起来像是一个好旧Socket的工作。