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