Skip heartbeat if there is no response
This commit is contained in:
		
							parent
							
								
									351efff147
								
							
						
					
					
						commit
						ea893b2322
					
				@ -8,11 +8,18 @@
 | 
				
			|||||||
var Shynet = {
 | 
					var Shynet = {
 | 
				
			||||||
  idempotency: null,
 | 
					  idempotency: null,
 | 
				
			||||||
  heartbeatTaskId: null,
 | 
					  heartbeatTaskId: null,
 | 
				
			||||||
 | 
					  skipHeartbeat: false,
 | 
				
			||||||
  sendHeartbeat: function () {
 | 
					  sendHeartbeat: function () {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      if (document.hidden) {
 | 
					      if (document.hidden) {
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      if (Shynet.skipHeartbeat) {
 | 
				
			||||||
 | 
					        console.warn("Heartbeat skipped due to lack of server response");
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      Shynet.skipHeartbeat = true;
 | 
				
			||||||
      var xhr = new XMLHttpRequest();
 | 
					      var xhr = new XMLHttpRequest();
 | 
				
			||||||
      xhr.open(
 | 
					      xhr.open(
 | 
				
			||||||
        "POST",
 | 
					        "POST",
 | 
				
			||||||
@ -20,6 +27,12 @@ var Shynet = {
 | 
				
			|||||||
        true
 | 
					        true
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
      xhr.setRequestHeader("Content-Type", "application/json");
 | 
					      xhr.setRequestHeader("Content-Type", "application/json");
 | 
				
			||||||
 | 
					      xhr.onload(function () { 
 | 
				
			||||||
 | 
					        Shynet.skipHeartbeat = false;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      xhr.onerror(function () { 
 | 
				
			||||||
 | 
					        Shynet.skipHeartbeat = false;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
      xhr.send(
 | 
					      xhr.send(
 | 
				
			||||||
        JSON.stringify({
 | 
					        JSON.stringify({
 | 
				
			||||||
          idempotency: Shynet.idempotency,
 | 
					          idempotency: Shynet.idempotency,
 | 
				
			||||||
@ -37,6 +50,7 @@ var Shynet = {
 | 
				
			|||||||
      clearInterval(Shynet.heartbeatTaskId);
 | 
					      clearInterval(Shynet.heartbeatTaskId);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    Shynet.idempotency = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
 | 
					    Shynet.idempotency = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
 | 
				
			||||||
 | 
					    Shynet.skipHeartbeat = false;
 | 
				
			||||||
    Shynet.heartbeatTaskId = setInterval(Shynet.sendHeartbeat, parseInt("{{heartbeat_frequency}}"));
 | 
					    Shynet.heartbeatTaskId = setInterval(Shynet.sendHeartbeat, parseInt("{{heartbeat_frequency}}"));
 | 
				
			||||||
    Shynet.sendHeartbeat();
 | 
					    Shynet.sendHeartbeat();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -51,4 +65,4 @@ window.addEventListener("load", Shynet.newPageLoad);
 | 
				
			|||||||
// -- START --
 | 
					// -- START --
 | 
				
			||||||
{{script_inject|safe}}
 | 
					{{script_inject|safe}}
 | 
				
			||||||
// -- END --
 | 
					// -- END --
 | 
				
			||||||
{% endif %}
 | 
					{% endif %}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user