Che cosa è una quantità sicura di tempo che vedo l'ora prima di rispondere a un browser, senza ottenere un timeout?
-
20-09-2019 - |
Domanda
Sto facendo un'applicazione di chat che funziona con a lungo polling per emulare una "spinta" dal server al client.
In sostanza, il browser chiede per gli aggiornamenti, e io rispondo, se c'è qualcosa di nuovo. In caso contrario, io continuo la connessione aperta senza rispondere fino a quando c'è qualcosa da mandare indietro.
Ora, se 30 secondi sono passati e non hanno inviato nulla, poi faccio inviare una risposta, dicendo fondamentalmente "NoNews", e il client esegue il polling di nuovo.
Quello che voglio fare è, ovviamente, a mantenere questa connessione senza rispondere il più a lungo possibile, prima che il browser sarà semplicemente il tempo fuori e rinunciare a me ... Non ho trovato una buona documentazione su ciò che il timeout del client è per ogni browser, e non sembrare che sia lo stesso per tutti loro ...
Ha qualcuno di voi ha fatto un'applicazione a lungo polling?
Tutte le idee che potrebbe essere il più lungo timeout sicuro?
Grazie!
Soluzione
Il browser dovrebbe rilevare un timeout su un XHR e fare un altro richiesta.
Aggiornamento:
Rilevamento timeout su un XHR in realtà è complicata, poiché non è built-in per qualche motivo. Naturalmente si dovrà anche gestire 502/503 risposte, ecc ..
Altri suggerimenti
Il timeout di lettura varia tra i browser. Ad esempio, questi sono i valori di default per IE,
Internet Explorer 4.0 and Internet Explorer 4.01 - 5 minutes
Internet Explorer 5.x and Internet Explorer 6.x - 60 minutes
Internet Explorer 7 and Internet Explorer 8 - 60 minutes
Come si può vedere, si ottiene straordinari più grande.
In polling lungo, timeout è tuo amico. Si dovrebbe approfittare di esso, invece di evitarlo. Timeout significa che si sta facendo PIÙ LUNGO polling possibile con il browser. Timeout è un errore si deve gestire anche senza polling lungo quindi non c'è alcun onere aggiuntivo.
Si potrebbe desiderare di leggere la mia risposta a questa domanda,
polling un server HTTP da J2ME cliente
Anche se si tratta di un client mobile, la maggior parte delle regole si applicano a AJAX polling lungo anche. In particolare, penso che si potranno beneficiare di un sistema di notifica così a lungo polling viene utilizzato solo per la notifica degli eventi e tutti i contenuti sono ancora tirati normalmente.