può lato client JavaScript rilevare quando il server ha chiuso la connessione http mentre cliente sta funzionando?

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

  •  09-09-2019
  •  | 
  •  

Domanda

Nella mia applicazione, il cliente è un insieme di funzioni JavaScript nel browser, e lo fa un po 'di lavoro - per esempio, la riproduzione di un clip. Esso utilizza XMLHttpRequest per comunicare con il server. Tuttavia, il server è consentito di chiudere bruscamente la connessione in quanto non v'è altro modo a quanto pare, di interrompere il cliente. Il cliente può rilevare, durante la riproduzione del clip, che la connessione è stata chiusa, e così stampare un messaggio e cancellare la pagina? Qualsiasi aiuto apprezzato. Grazie, Anil

È stato utile?

Soluzione 3

Sembra che il server non possono informare il cliente che la connessione è chiusa; tuttavia il metodo di polling proposto non è efficiente come una notifica sarebbe stata.

ho risolto specificando che al prossimo Get richiesta, il cliente sarebbe stato detto che la sua sessione è valido.

Questa è stata implementata da riscrittura degli URL - aggiungendo "jsessionid = [id]" su ogni richiesta inviata dalle funzioni Javascript. il servlet memorizza la corrente id di sessione.

Altri suggerimenti

Se la clip viene trasmesso al cliente, si può solo fermare servirla.

Tuttavia, sembra che la clip viene scaricato e poi giocato attraverso il browser. In questo caso è probabilmente meglio utilizzare un approccio watchdog come descritto da CookieOfFortune: interroga il server con regolarità (una volta al secondo o giù di lì) e farlo rispondere con piccolo messaggio di conferma. Quando la connessione è chiusa, ottenere il server per rispondere con un messgage negativo.

Purtroppo, senza l'utilizzo di un sistema di cometa, è molto difficile ottenere il server per 'invio' un messaggio che indica la chiusura della sessione.

Tenete a mente, però, che non appena il cliente ha scaricato una clip essi saranno in grado di giocare in pieno se vogliono. Purtroppo non c'è modo di fermare questo oltre il passaggio a un approccio streaming. Se la protezione del contenuto è una priorità, io suggerirei fare questo cambiamento.

Probabilmente si può interrogare l'oggetto XMLHttpRequest, quindi basta provare a inviare un battito cardiaco ogni tanto un po 'per vedere se la connessione è chiusa. In caso contrario, il server dovrebbe inviare un segnale per dire al cliente che sta per chiudere la connessione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top