from websockets.exceptions import ConnectionClosed
from websockets.legacy.server import serve, WebSocketServerProtocol
-from controlpi import BasePlugin, MessageBus, Message, MessageTemplate
+from controlpi import (BasePlugin, MessageBus, BusException,
+ Message, MessageTemplate)
from typing import Optional, Tuple
'connection closed'}}))
for template in message['up filter']:
sends.append(template)
- self._bus.register(self._name, 'WSServer', sends,
- message['down filter'], self._receive)
+ try:
+ self._bus.register(self._name, 'WSServer', sends,
+ message['down filter'],
+ self._receive)
+ except BusException:
+ self._bus.unregister(self._name)
+ self._bus.register(self._name, 'WSServer', sends,
+ message['down filter'],
+ self._receive)
open_message = Message(self._name)
open_message['event'] = 'connection opened'
open_message['address'] = self._address