puede detectar JavaScript en el cliente cuando el servidor ha cerrado la conexión http mientras el cliente está funcionando?

StackOverflow https://stackoverflow.com/questions/737878

  •  09-09-2019
  •  | 
  •  

Pregunta

En mi aplicación, el cliente es un conjunto de funciones de Javascript en el navegador, y lo hace un poco de trabajo - por ejemplo, la reproducción de un clip. Utiliza XmlHttpRequest a hablar con el servidor. Sin embargo, se permite que el servidor para cerrar bruscamente la conexión ya que no hay otro camino que parece, para interrumpir el cliente. El cliente puede detectar, mientras se está reproduciendo el clip, que la conexión se cerró, y así imprimir un mensaje y borrar la página? Cualquier ayuda apreciada. Gracias, Anil

¿Fue útil?

Solución 3

Parece que el servidor no pueden notificar al cliente que se cierra la conexión; sin embargo, el método de sondeo sugerido no es tan eficiente como una notificación hubiera sido.

Lo resuelto mediante la especificación de que en la próxima petición Get, se le dijo al cliente que su sesión no es válida.

Esto fue implementado por la reescritura de URL - añadiendo "jsessionid = [id]" en cada solicitud enviada por las funciones Javascript. el servlet almacena el id de sesión actual.

Otros consejos

Si el clip se transmite al cliente, usted podría dejar de servir a él.

Sin embargo, parece que el clip se está descargando y luego se reproduce a través del navegador. En este caso es probable que sea mejor utilizar un enfoque de vigilancia según lo descrito por CookieOfFortune: consultar al servidor periódicamente (una vez por segundo o así) y conseguir que responda con pequeño mensaje de confirmación. Cuando se cierra la conexión, conseguir que el servidor responda con un messgage negativo.

Por desgracia, sin necesidad de utilizar un sistema similar a los cometas, es muy difícil conseguir el servidor para 'enviar' un mensaje que indica el cierre de sesión.

Tenga en cuenta, sin embargo, que tan pronto como el cliente ha descargado un clip que será capaz de jugar en su totalidad si así lo desean. Desafortunadamente no hay manera de parar esto aparte de cambiar a un enfoque de streaming. Si la seguridad de su contenido es una prioridad, sugeriría hacer este cambio.

Puede probablemente sondear el objeto XMLHttpRequest, por lo que sólo intenta enviar un latido del corazón de vez en cuando para ver si la conexión se cierra. De lo contrario, el servidor tendría que enviar alguna señal para decirle al cliente que va a cerrar la conexión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top