mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Back off comms reconnect attempts after prolonged failures
This commit is contained in:
		| @@ -18,7 +18,8 @@ RED.comms = (function() { | ||||
|  | ||||
|     var errornotification = null; | ||||
|     var clearErrorTimer = null; | ||||
|  | ||||
|     var connectCountdownTimer = null; | ||||
|     var connectCountdown = 10; | ||||
|     var subscriptions = {}; | ||||
|     var ws; | ||||
|     var pendingAuth = false; | ||||
| @@ -82,14 +83,39 @@ RED.comms = (function() { | ||||
|             } | ||||
|         }; | ||||
|         ws.onclose = function() { | ||||
|             if (reconnectAttempts > 5 && errornotification == null) { | ||||
|                 errornotification = RED.notify(RED._("notification.error",{message:RED._("notification.errors.lostConnection")}),"error",true); | ||||
|             } else if (clearErrorTimer) { | ||||
|             if (clearErrorTimer) { | ||||
|                 clearTimeout(clearErrorTimer); | ||||
|                 clearErrorTimer = null; | ||||
|             } | ||||
|             reconnectAttempts++; | ||||
|             setTimeout(connectWS,1000); | ||||
|             if (reconnectAttempts < 10) { | ||||
|                 setTimeout(connectWS,1000); | ||||
|                 if (reconnectAttempts > 5 && errornotification == null) { | ||||
|                     errornotification = RED.notify(RED._("notification.errors.lostConnection"),"error",true); | ||||
|                 } | ||||
|             } else if (reconnectAttempts < 20) { | ||||
|                 setTimeout(connectWS,2000); | ||||
|             } else { | ||||
|                 connectCountdown = 60; | ||||
|                 connectCountdownTimer = setInterval(function() { | ||||
|                     connectCountdown--; | ||||
|                     if (connectCountdown === 0) { | ||||
|                         errornotification.update(RED._("notification.errors.lostConnection")); | ||||
|                         clearInterval(connectCountdownTimer); | ||||
|                         connectWS(); | ||||
|                     } else { | ||||
|                         var msg = RED._("notification.errors.lostConnectionReconnect",{time: connectCountdown})+' <a href="#">'+ RED._("notification.errors.lostConnectionTry")+'</a>'; | ||||
|                         errornotification.update(msg); | ||||
|                         $(errornotification).find("a").click(function(e) { | ||||
|                             e.preventDefault(); | ||||
|                             errornotification.update(RED._("notification.errors.lostConnection")); | ||||
|                             clearInterval(connectCountdownTimer); | ||||
|                             connectWS(); | ||||
|                         }) | ||||
|                     } | ||||
|                 },1000); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -48,6 +48,14 @@ RED.notify = (function() { | ||||
|                 }); | ||||
|             }; | ||||
|         })(); | ||||
|  | ||||
|         n.update = (function() { | ||||
|             var nn = n; | ||||
|             return function(msg) { | ||||
|                 nn.innerHTML = msg; | ||||
|             } | ||||
|         })(); | ||||
|          | ||||
|         if (!fixed) { | ||||
|             $(n).click((function() { | ||||
|                 var nn = n; | ||||
|   | ||||
| @@ -59,7 +59,9 @@ | ||||
|  | ||||
|         "error": "<strong>Error</strong>: __message__", | ||||
|         "errors": { | ||||
|             "lostConnection": "Lost connection to server", | ||||
|             "lostConnection": "Lost connection to server, reconnecting...", | ||||
|             "lostConnectionReconnect": "Lost connection to server, reconnecting in __time__s.", | ||||
|             "lostConnectionTry": "Try now", | ||||
|             "cannotAddSubflowToItself": "Cannot add subflow to itself", | ||||
|             "cannotAddCircularReference": "Cannot add subflow - circular reference detected" | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user