Merge pull request #812 from smcmnz/ws-reconnect

Fix websocket automatic reconnection
This commit is contained in:
mcarlton00 2024-03-23 12:31:55 -04:00 committed by GitHub
commit b880f47585
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 6 additions and 14 deletions

View file

@ -35,7 +35,6 @@ class WSClient(threading.Thread):
self.client = client
threading.Thread.__init__(self)
self.retry_count = 0
def send(self, message, data=""):
@ -62,23 +61,18 @@ class WSClient(threading.Thread):
while not self.stop:
time.sleep(self.retry_count * 5)
self.wsc.run_forever(ping_interval=10)
self.wsc.run_forever(ping_interval=10, reconnect=10)
if not self.stop and monitor.waitForAbort(5):
break
# Wait a maximum of 60 seconds before retrying connection
if self.retry_count < 12:
self.retry_count += 1
LOG.info("---<[ websocket ]")
def on_error(self, ws, error):
LOG.error(error)
def on_open(self, ws):
LOG.info("--->[ websocket ]")
LOG.info("--->[ websocket opened ]")
# Avoid a timing issue where the capabilities are not correctly registered
time.sleep(5)
if settings('remoteControl.bool'):
self.client.jellyfin.post_capabilities({
'PlayableMediaTypes': "Audio,Video",
@ -99,8 +93,6 @@ class WSClient(threading.Thread):
"PlayableMediaTypes": "Audio, Video",
"SupportsMediaControl": False
})
# Reinitialize the retry counter after successful connection
self.retry_count = 0
def on_message(self, ws, message):

View file

@ -34,4 +34,4 @@ dependencies:
- addon: 'script.module.addon.signals'
version: '0.0.5+matrix.1'
- addon: 'script.module.websocket'
version: '0.58.0+matrix.1'
version: '1.6.4'

View file

@ -16,7 +16,7 @@ pytest >= 4.6.11
coverage >= 5.2
flake8 >= 3.8
flake8-import-order >= 0.18
websocket-client >= 0.57.0
websocket-client >= 1.6.4
types-requests >= 2.31
types-PyYAML >= 6.0