"""Provide a client ControlPi plugin WSClient for websockets."""
import asyncio
-import asyncio.exceptions
import fcntl
import json
import socket
import struct
-from websockets.exceptions import ConnectionClosed, InvalidMessage
+from websockets.exceptions import ConnectionClosed
from websockets.client import connect, WebSocketClientProtocol
from controlpi import BasePlugin, Message, MessageTemplate, BusException
"""Connect to wsserver and process messages from it."""
async for websocket in connect(self.conf['url'],
ping_interval=1, ping_timeout=5):
+ print(f"WSClient '{self.name}': Connection opened"
+ f" to {self.conf['url']}.")
await self.bus.send(Message(self.name,
{'event':
'connection opened'}))
await self.bus.send(Message(self.name,
{'event':
'connection closed'}))
- except (OSError, InvalidMessage,
- asyncio.exceptions.TimeoutError) as e:
- print(f"WSClient to {self.conf['url']} connection: {e}")
+ except Exception as e:
+ print(f"WSClient '{self.name}': Exception in connection: {e}")
await asyncio.sleep(1)
async def _send(self, json_message: str) -> None:
try:
await self.bus.send(Message(self.name, translated_message))
except BusException as e:
- print(f"WSClient to {self.conf['url']} local bus: {e}")
+ print(f"WSClient '{self.name}': Exception on local bus: {e}")