34 lines
895 B
Python
34 lines
895 B
Python
import asyncio
|
|
import logging
|
|
import ssl
|
|
|
|
import certifi
|
|
import websockets
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger("WebSocketFactory")
|
|
|
|
|
|
class WebSocketFactory:
|
|
|
|
def __init__(self, url):
|
|
self.url = url
|
|
self.websocket = None
|
|
self.loop = asyncio.get_event_loop()
|
|
|
|
async def connect(self):
|
|
ssl_context = ssl.create_default_context()
|
|
ssl_context.load_verify_locations(certifi.where())
|
|
try:
|
|
self.websocket = await websockets.connect(self.url, ssl=ssl_context)
|
|
logger.info("WebSocket connection established.")
|
|
return self.websocket
|
|
except Exception as e:
|
|
logger.error(f"Error connecting to WebSocket: {e}")
|
|
return None
|
|
|
|
async def close(self):
|
|
if self.websocket:
|
|
await self.websocket.close()
|
|
self.websocket = None
|