我正在使用java servlet实现一个长轮询http连接。
我怎么知道http客户端在任何情况下仍然有效?目前,我所做的是将一个字节写入输出流并刷新数据。如果存在IO异常,则客户端已经死亡。
但是在ASP.NET中有一个属性Response.IsClientConnected
可以查看客户端是否处于活动状态而不向输出流写入任何内容。
我想知道如何在java servlet中开发。我不想继续将数据写入http响应流,因为它可能会花费网络费用。
提前致谢。
答案 0 :(得分:3)
使用Servlet API很难实现这一点。虽然低级别的Socket API提供此功能(Socket.isConnected()
),但任何更高级别的API都无法提供相同的功能。不确定是否有使用Servlet API的强制措施,或者您可以使用低级套接字API。
答案 1 :(得分:-1)
也许你采取了错误的做法?开发HTTP协议以用于请求 - 响应样式,它不适合用于长轮询。事实上,在客户端获得服务器响应之前,应尽可能延迟。
你所描述的案例看起来像是一个好旧套接字的工作。