make websocket version dynamic

This commit is contained in:
Clxud 2023-03-09 23:08:32 +00:00
parent f0726cddde
commit 4c3cd7e81a
1 changed files with 14 additions and 9 deletions

View File

@ -73,9 +73,10 @@ class Node:
self._heartbeat: int = heartbeat self._heartbeat: int = heartbeat
self._secure: bool = secure self._secure: bool = secure
self.fallback: bool = fallback self.fallback: bool = fallback
self._version: str = None
self._websocket_uri: str = f"{'wss' if self._secure else 'ws'}://{self._host}:{self._port}/v3/websocket" self._websocket_uri: str = f"{'wss' if self._secure else 'ws'}://{self._host}:{self._port}"
self._rest_uri: str = f"{'https' if self._secure else 'http'}://{self._host}:{self._port}" self._rest_uri: str = f"{'https' if self._secure else 'http'}://{self._host}:{self._port}"
self._session: Optional[ClientSession] = session self._session: Optional[ClientSession] = session
@ -84,7 +85,7 @@ class Node:
self._session_id: str = None self._session_id: str = None
self._available: bool = False self._available: bool = False
self._version: str = None
self._route_planner = RoutePlanner(self) self._route_planner = RoutePlanner(self)
self._headers = { self._headers = {
@ -275,18 +276,22 @@ class Node:
"Lavalink version 3.7.0 or above is required to use this library." "Lavalink version 3.7.0 or above is required to use this library."
) )
self._websocket = await self._session.ws_connect(
self._websocket_uri, headers=self._headers, heartbeat=self._heartbeat
)
if not self._task:
self._task = asyncio.create_task(self._listen())
self._available = True
if version.endswith('-SNAPSHOT'): if version.endswith('-SNAPSHOT'):
# we're just gonna assume all snapshot versions correlate with v4 # we're just gonna assume all snapshot versions correlate with v4
self._version = 4 self._version = 4
else: else:
self._version = version[:1] self._version = version[:1]
self._websocket = await self._session.ws_connect(
f"{self._websocket_uri}/v{self._version}/websocket",
headers=self._headers,
heartbeat=self._heartbeat
)
if not self._task:
self._task = asyncio.create_task(self._listen())
self._available = True
return self return self
except (aiohttp.ClientConnectorError, ConnectionRefusedError): except (aiohttp.ClientConnectorError, ConnectionRefusedError):