3232from nonebot .log import LoguruHandler
3333
3434try :
35- from websockets .exceptions import ConnectionClosed
36- from websockets .legacy .client import Connect , WebSocketClientProtocol
35+ from websockets import ClientConnection , ConnectionClosed , connect
3736except 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