websocket: add disconnect and stoppd event

This commit is contained in:
Jacob Plaster
2019-01-29 15:09:47 +00:00
parent 21890e5708
commit 5a6c2bbbef
3 changed files with 16 additions and 4 deletions

View File

@@ -38,6 +38,8 @@ class GenericWebsocket:
self.loop = loop or asyncio.get_event_loop()
self.events = EventEmitter(
scheduler=asyncio.ensure_future, loop=self.loop)
# overide 'error' event to stop it raising an exception
self.events.on('error', self.on_error)
self.ws = None
self.max_retries = max_retries
@@ -72,6 +74,7 @@ class GenericWebsocket:
await self._connect(host)
retries = 0
except (ConnectionClosed, socket.error) as e:
self._emit('disconnected')
self.logger.error(str(e))
retries += 1
# wait 5 seconds befor retrying
@@ -79,6 +82,7 @@ class GenericWebsocket:
await asyncio.sleep(5)
self.logger.info("Reconnect attempt {}/{}".format(retries, self.max_retries))
self.logger.info("Unable to connect to websocket.")
self._emit('stopped')
def remove_all_listeners(self, event):
"""
@@ -111,11 +115,10 @@ class GenericWebsocket:
On websocket error print and fire event
"""
self.logger.error(error)
self.events.emit('error', error)
async def on_close(self):
"""
On websocket close print and fire event
On websocket close print and fire event. This is used by the data server.
"""
self.logger.info("Websocket closed.")
await self.ws.close()