@@ -83,6 +83,13 @@ def __init__(
8383 self .current_session = None
8484 self .current_session_monitor = None
8585
86+ # https://docs.aiohttp.org/en/stable/client_reference.html
87+ # Unless you are connecting to a large, unknown number of different servers
88+ # over the lifetime of your application,
89+ # it is suggested you use a single session for the lifetime of your application
90+ # to benefit from connection pooling.
91+ self .aiohttp_client_session = aiohttp .ClientSession ()
92+
8693 self .on_message_listeners = on_message_listeners or []
8794 self .on_error_listeners = on_error_listeners or []
8895 self .on_close_listeners = on_close_listeners or []
@@ -154,10 +161,9 @@ async def receive_messages(self) -> None:
154161
155162 async def connect (self ):
156163 old_session = None if self .current_session is None else self .current_session
157- cs = aiohttp .ClientSession ()
158164 if self .wss_uri is None :
159165 self .wss_uri = await self .issue_new_wss_url ()
160- self .current_session = await cs .ws_connect (
166+ self .current_session = await self . aiohttp_client_session .ws_connect (
161167 self .wss_uri , heartbeat = self .ping_interval , proxy = self .proxy ,
162168 )
163169 self .auto_reconnect_enabled = self .default_auto_reconnect_enabled
@@ -194,3 +200,5 @@ async def close(self):
194200 self .current_session_monitor .cancel ()
195201 if self .message_receiver is not None :
196202 self .message_receiver .cancel ()
203+ if self .aiohttp_client_session is not None :
204+ await self .aiohttp_client_session .close ()
0 commit comments