# HG changeset patch # User Goffi # Date 1357398453 -3600 # Node ID b17ec3a6a11220c9a32aa08a0286c762c576a762 # Parent 46835a4e25519a23fd4897306267dbc9c00dd881 browser side: in case of error, retry delay is doubled at each try diff -r 46835a4e2551 -r b17ec3a6a112 libervia.py --- a/libervia.py Sat Jan 05 16:06:33 2013 +0100 +++ b/libervia.py Sat Jan 05 16:07:33 2013 +0100 @@ -90,11 +90,19 @@ ]) class BridgeSignals(LiberviaJsonProxy): + RETRY_BASE_DELAY = 1000 + def __init__(self, host): self.host = host + self.retry_delay = self.RETRY_BASE_DELAY LiberviaJsonProxy.__init__(self, "/json_signal_api", ["getSignals"]) + def onRemoteResponse(self, response, request_info): + self.retry_delay = self.RETRY_BASE_DELAY + LiberviaJsonProxy.onRemoteResponse(self, response, request_info) + + def onRemoteError(self, code, errobj, request_info): LiberviaJsonProxy.onRemoteError(self, code, errobj, request_info) #we now try to reconnect @@ -103,7 +111,8 @@ else: def _timerCb(): self.host.bridge_signals.call('getSignals', self.host._getSignalsCB) - Timer(notify=_timerCb).schedule(5000) #we wait 5 s and try again + Timer(notify=_timerCb).schedule(self.retry_delay) + self.retry_delay *= 2 class SatWebFrontend: def onModuleLoad(self):