Mi aplicación web debe procesar y servir una gran cantidad de datos para mostrar ciertas páginas. A veces, el usuario cierra o actualiza una página mientras el servidor todavía está ocupado procesándola. Esto significa que el servidor continuará procesando los datos durante varios minutos solo para enviarlos a un cliente que ya no está escuchando.¿Puede un servidor http detectar que un cliente ha cancelado su solicitud?
¿Es posible detectar que la conexión se ha roto y reaccionar a ella?
En este proyecto en particular, estamos usando Django y NginX, o Apache. Supuse que esto es posible porque el servidor de desarrollo de Django parece reaccionar a solicitudes canceladas imprimiendo excepciones de Broken Pipe. Me encantaría que hiciera una excepción que el código de mi aplicación pudiera detectar. It appears JSP can do this. So can node.jshere.
Como alternativa, podría registrar un controlador de eventos de descarga en la página en cuestión, hacer un XHR sincrónico solicitando que se cancele la solicitud anterior de este usuario, y hacer algún tipo de comunicación entre procesos para hacerlo. Quizás si el procesamiento de datos más lento se transfirió a otro proceso que podría identificar y matar más fácilmente, sin matar el proceso de respuesta ...
Creo que la palabra correcta es sin conexión, :) – jerjer
@jerjer - Gracias por la corrección :) – Oded
Parece extraño, ya que TCP debería poder hacer esto. Supongo que algunas cosas se pierden en la abstracción. –