Kan bron niet laden: net::ERR_NETWORK_IO_SUSPENDED

Ik heb in Stack Overflow en Google gezocht naar de specifieke foutmelding in de titel, maar ik heb deze niet gevonden (in de context van JavaScript-codering, niet in browserinstellingen). Op mijn site staan ​​vijf functies die elke 10 seconden worden aangeroepen. Deze functies doen dingen als:

  1. Controleer de inbox van de gebruiker op nieuwe e-mails
  2. Controleer het account van de gebruiker op nieuwe expresberichten
  3. enz.

Als de gebruiker echter is ingelogd, maar INACTIEF is (gebruikt de muis niet en drukt niet op een toets) gedurende ongeveer 15 minuten, krijg ik de volgende foutmelding wanneer ik “Element inspecteren” met Chrome:

Failed to load resource: net::ERR_NETWORK_IO_SUSPENDED // (x 5)
Uncaught Type Error: Cannot read property 'combinedfiletimeinput' of undefined //one of my previously defined form values is now not defined

Op dit punt worden de nieuwe e-mailtellingen, nieuwe IM-tellingen, enz. van de gebruiker blanco (terwijl ze voorheen gehele getallen waren). De gebruiker hoeft alleen maar de pagina te vernieuwen of naar een andere pagina te gaan om opnieuw verbinding te maken, dus het is geen groot probleem.

Mijn hackoplossing is om een ​​JavaScript-timer te gebruiken om de gebruiker automatisch uit te loggen als er zich binnen een periode van 15 minuten geen van de volgende gebeurtenissen voordoen:

  1. Muisklik
  2. Muisbeweging
  3. Toetsdruk

Is er een manier om te voorkomen dat deze fout ‘Kan bron niet laden’ optreedt?

UPDATE: dit lijkt te gebeuren wanneer het apparaat van de gebruiker slaapt/sluimert terwijl hij nog steeds is aangemeld… wanneer de gebruiker het apparaat opnieuw opstart. Dit is wanneer de foutmelding te zien is op Chrome’s Inspect Element, Firebug, etc.

UPDATE 10/02/2014: ik heb nu de vijf setTimeout-functies samengevat in één grote setTimeout-functie. Bovendien is het formulier dat de wijzigingstijden bevatte in een invoer met de naam “combinedfiletimeinput” verwijderd en ik behandel nu de wijzigingstijden van het bestand anders.

Hier is een screenshot van het Chrome Developer Tools-logboek waarin de fout wordt weergegeven. Ik heb “mijnsite” toegevoegd in plaats van de naam van mijn site en “bestandsnaam” in plaats van de eigenlijke bestandsnaam. Ik heb ook de naam van het externe JavaScript-bestand wit gemaakt en het enige dat overblijft is .js (sorry, maar ik probeer gewoon voorzichtig te zijn :)) Ik heb een deel van de schermafbeelding afgesneden, zodat de tekst groot genoeg zou zijn om te lezen.

Chrome-schermafbeelding

Zoals je kunt zien aan de screenshot, wordt het verzoek voor de eerste drie verzoeken goed verwerkt. Daarna heb ik mijn apparaat “geslapen” en vervolgens mijn apparaat weer ingeschakeld. Dat is waar de volgende twee verzoeken fouten zijn (in rood). Na deze eerste twee fouten worden de verzoeken weer normaal verwerkt (rijen met zwarte tekst, na rijen met rode tekst). De console geeft de foutmelding duidelijk weer.


Antwoord 1, autoriteit 100%

Gewoon een samenvatting van mijn opmerkingen onder de vraag voor de community.

Na wat testen lijkt het erop dat het instellen van Ajax time-outs voor elk gesprek een must is. Zonder time-outs zorgt NET::-fouten zoals ERR_NETWORK_IO_SUSPENDED, ERR_INTERNET_DISCONNECTED, enz.ervoor dat Ajax de uitvoering stopt en niet wordt hervat nadat de computer is ontwaakt.

Voor jQuery:

$.ajax({
   url: yourURL,
   timeout: 4000
});

Voor XMLHttpRequest(XHR):

xhr.timeout = 4000;

Bovendien is een uitzonderingshandler nodig om uw script verbindingsfouten te laten opvangen, zodat uw JavaScript-code niet kapot gaat vanwege onverwacht gedrag/waarden.

Zelfs met time-outs en uitzonderingshandler, zal uw toepassing NET::-fouten genereren, maar deze zouden uw toepassing nietschaden; je zou ze kunnen zien als Kennisgevingen.


Antwoord 2, autoriteit 4%

Hoezeer ik ook denk dat het vangen van uitzonderingen de algemene remedie zou moeten zijn, je zou kunnen proberen nepgebeurtenissen (muis, scroll, toetsenbord) te activeren om te zien of dat zou voorkomen dat Chrome naar de status ‘inactief’ gaat.

Stack overflow vraag Hoe een muis simuleren Klik met JavaScript? kan nuttig zijn.

Other episodes