我的Web应用程序必须处理并提供大量数据以显示某些页面。有时,当服务器仍在忙于处理页面时,用户关闭或刷新了页面。 这意味着服务器将继续处理数据数分钟,然后将其发送给不再监听的客户端。
是否可能检测到连接已中断并对其进行响应?
在这个特定的项目中,我们使用Django和NginX或Apache。 我认为这是可能的,因为Django开发服务器似乎会通过打印“Broken Pipe”异常来对取消请求做出反应。我希望它能够引发一个异常,让我的应用程序代码可以捕获。 JSP似乎可以做到这一点。node.js也可以,在这里。
或者,我可以在相关页面注册一个unload事件处理程序,让它执行同步XHR请求,请求取消此用户的先前请求,并进行某种形式的进程间通信以实现此目的。也许,如果较慢的数据处理被移交给另一个我可以更容易地识别和停止的进程,而不会杀死响应进程......