Skip to content

Commit 81f899b

Browse files
authored
✨ Feature: 升级至新版本 websockets client API (#3606)
1 parent c52e130 commit 81f899b

File tree

3 files changed

+1201
-1044
lines changed

3 files changed

+1201
-1044
lines changed

nonebot/drivers/websockets.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
from nonebot.log import LoguruHandler
3333

3434
try:
35-
from websockets.exceptions import ConnectionClosed
36-
from websockets.legacy.client import Connect, WebSocketClientProtocol
35+
from websockets import ClientConnection, ConnectionClosed, connect
3736
except ModuleNotFoundError as e: # pragma: no cover
3837
raise ImportError(
3938
"Please install websockets first to use this driver. "
@@ -71,17 +70,15 @@ def type(self) -> str:
7170
@override
7271
@asynccontextmanager
7372
async def websocket(self, setup: Request) -> AsyncGenerator["WebSocket", None]:
74-
if setup.proxy is not None:
75-
logger.warning("proxy is not supported by websockets driver")
76-
7773
if isinstance(setup.timeout, Timeout):
7874
timeout = setup.timeout.total or setup.timeout.connect or setup.timeout.read
7975
else:
8076
timeout = setup.timeout
8177

82-
connection = Connect(
78+
connection = connect(
8379
str(setup.url),
84-
extra_headers={**setup.headers, **setup.cookies.as_header(setup)},
80+
additional_headers={**setup.headers, **setup.cookies.as_header(setup)},
81+
proxy=setup.proxy if setup.proxy is not None else True,
8582
open_timeout=timeout,
8683
)
8784
async with connection as ws:
@@ -92,14 +89,14 @@ class WebSocket(BaseWebSocket):
9289
"""Websockets WebSocket Wrapper"""
9390

9491
@override
95-
def __init__(self, *, request: Request, websocket: WebSocketClientProtocol):
92+
def __init__(self, *, request: Request, websocket: ClientConnection):
9693
super().__init__(request=request)
9794
self.websocket = websocket
9895

9996
@property
10097
@override
10198
def closed(self) -> bool:
102-
return self.websocket.closed
99+
return self.websocket.close_code is not None
103100

104101
@override
105102
async def accept(self):

0 commit comments

Comments
 (0)