podem lado do cliente Javascript detectar quando o servidor tem conexão http fechado enquanto o cliente está funcionando?

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

  •  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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top