11from __future__ import annotations
22
3+ import ssl
34from dataclasses import asdict
45from dataclasses import dataclass
56from dataclasses import field
@@ -462,9 +463,9 @@ class ConnectionConfig:
462463 close_timeout: Timeout for closing WebSocket connection.
463464 max_size: Maximum message size in bytes.
464465 max_queue: Maximum number of messages in receive queue.
465- read_limit: Maximum number of bytes to read from WebSocket.
466- write_limit: Maximum number of bytes to write to WebSocket.
467-
466+ read_limit: Maximum number of bytes to read from WebSocket (legacy websockets only) .
467+ write_limit: Maximum number of bytes to write to WebSocket (legacy websockets only) .
468+ ssl_context: SSL context for the WebSocket connection.
468469 Returns:
469470 Websocket connection configuration as a dict while excluding None values.
470471 """
@@ -477,9 +478,29 @@ class ConnectionConfig:
477478 max_queue : Optional [int ] = None
478479 read_limit : Optional [int ] = None
479480 write_limit : Optional [int ] = None
481+ ssl_context : ssl .SSLContext = field (default_factory = ssl .create_default_context )
480482
481483 def to_dict (self ) -> dict [str , Any ]:
482- return asdict (self , dict_factory = lambda x : {k : v for (k , v ) in x if v is not None })
484+ """Convert to dict, excluding ssl field to avoid pickle errors."""
485+ result = {}
486+ if self .open_timeout is not None :
487+ result ["open_timeout" ] = self .open_timeout
488+ if self .ping_interval is not None :
489+ result ["ping_interval" ] = self .ping_interval
490+ if self .ping_timeout is not None :
491+ result ["ping_timeout" ] = self .ping_timeout
492+ if self .close_timeout is not None :
493+ result ["close_timeout" ] = self .close_timeout
494+ if self .max_size is not None :
495+ result ["max_size" ] = self .max_size
496+ if self .max_queue is not None :
497+ result ["max_queue" ] = self .max_queue
498+ if self .read_limit is not None :
499+ result ["read_limit" ] = self .read_limit
500+ if self .write_limit is not None :
501+ result ["write_limit" ] = self .write_limit
502+
503+ return result
483504
484505
485506@dataclass
0 commit comments