podem lado do cliente Javascript detectar quando o servidor tem conexão http fechado enquanto o cliente está funcionando?
-
09-09-2019 - |
Pergunta
Na minha aplicação, o cliente é um conjunto de funções Javascript no navegador, e ele faz algum trabalho - por exemplo, reproduzir um clipe. Ele usa XMLHttpRequest para conversar com o servidor. No entanto, o servidor está autorizado a abruptamente fechar a conexão já que não há outro caminho que parece, para interromper o cliente. O cliente pode detectar, durante a reprodução do clipe, que a conexão foi fechada, e assim imprimir uma mensagem e apagar a página? Qualquer ajuda apreciado. obrigado, Anil
Solução 3
Parece que o servidor não pode notificar o cliente de que a conexão é fechada; no entanto o método de votação proposto não é tão eficiente quanto uma notificação teria sido.
Eu resolvi, especificando que no próximo Obter pedido, o cliente iria ser dito que a sua sessão é inválida.
Esta foi implementado pela URL reescrevendo - acrescentando "jsessionid = [id]" em cada pedido enviado pelas funções Javascript. as lojas de servlet a corrente id de sessão.
Outras dicas
Se o clipe é transmitido para o cliente, você poderia simplesmente parar de servi-lo.
No entanto, parece que o clipe está sendo baixado e, em seguida, jogado através do browser. Neste caso, é provavelmente melhor usar uma abordagem de vigilância, como descrito por CookieOfFortune: Poll o servidor regularmente (uma vez por segundo ou assim) e buscá-la para responder com mensagem minúscula de confirmação. Quando a conexão é fechada, obter o servidor para responder com um messgage negativo.
Infelizmente, sem o uso de um cometa-como sistema, é muito difícil conseguir o servidor para 'enviar' um fecho de sessão de mensagem indicando.
Tenha em mente, porém, que, assim que o cliente tenha baixado um clipe que será capaz de reproduzi-lo na íntegra, se eles querem. Infelizmente não há nenhuma maneira de parar isto além de mudar para uma abordagem de streaming. Se garantir o seu conteúdo é uma prioridade, eu sugiro fazer essa alteração.
Você provavelmente pode consultar o objeto XMLHttpRequest, então apenas tentar enviar um batimento cardíaco de vez em quando para ver se a conexão é fechada. Caso contrário, o servidor teria que enviar algum sinal para informar o cliente que vai fechar a conexão.