mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-09-05 11:37:14 +00:00
✨ Feature: 升级至新版本 websockets client API (#3606)
This commit is contained in:
@ -32,8 +32,7 @@ from nonebot.exception import WebSocketClosed
|
|||||||
from nonebot.log import LoguruHandler
|
from nonebot.log import LoguruHandler
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from websockets.exceptions import ConnectionClosed
|
from websockets import ClientConnection, ConnectionClosed, connect
|
||||||
from websockets.legacy.client import Connect, WebSocketClientProtocol
|
|
||||||
except ModuleNotFoundError as e: # pragma: no cover
|
except ModuleNotFoundError as e: # pragma: no cover
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
"Please install websockets first to use this driver. "
|
"Please install websockets first to use this driver. "
|
||||||
@ -71,17 +70,15 @@ class Mixin(WebSocketClientMixin):
|
|||||||
@override
|
@override
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def websocket(self, setup: Request) -> AsyncGenerator["WebSocket", None]:
|
async def websocket(self, setup: Request) -> AsyncGenerator["WebSocket", None]:
|
||||||
if setup.proxy is not None:
|
|
||||||
logger.warning("proxy is not supported by websockets driver")
|
|
||||||
|
|
||||||
if isinstance(setup.timeout, Timeout):
|
if isinstance(setup.timeout, Timeout):
|
||||||
timeout = setup.timeout.total or setup.timeout.connect or setup.timeout.read
|
timeout = setup.timeout.total or setup.timeout.connect or setup.timeout.read
|
||||||
else:
|
else:
|
||||||
timeout = setup.timeout
|
timeout = setup.timeout
|
||||||
|
|
||||||
connection = Connect(
|
connection = connect(
|
||||||
str(setup.url),
|
str(setup.url),
|
||||||
extra_headers={**setup.headers, **setup.cookies.as_header(setup)},
|
additional_headers={**setup.headers, **setup.cookies.as_header(setup)},
|
||||||
|
proxy=setup.proxy if setup.proxy is not None else True,
|
||||||
open_timeout=timeout,
|
open_timeout=timeout,
|
||||||
)
|
)
|
||||||
async with connection as ws:
|
async with connection as ws:
|
||||||
@ -92,14 +89,14 @@ class WebSocket(BaseWebSocket):
|
|||||||
"""Websockets WebSocket Wrapper"""
|
"""Websockets WebSocket Wrapper"""
|
||||||
|
|
||||||
@override
|
@override
|
||||||
def __init__(self, *, request: Request, websocket: WebSocketClientProtocol):
|
def __init__(self, *, request: Request, websocket: ClientConnection):
|
||||||
super().__init__(request=request)
|
super().__init__(request=request)
|
||||||
self.websocket = websocket
|
self.websocket = websocket
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@override
|
@override
|
||||||
def closed(self) -> bool:
|
def closed(self) -> bool:
|
||||||
return self.websocket.closed
|
return self.websocket.close_code is not None
|
||||||
|
|
||||||
@override
|
@override
|
||||||
async def accept(self):
|
async def accept(self):
|
||||||
|
2224
poetry.lock
generated
2224
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -36,7 +36,7 @@ typing-extensions = ">=4.4.0,<5.0.0"
|
|||||||
tomli = { version = "^2.0.1", python = "<3.11" }
|
tomli = { version = "^2.0.1", python = "<3.11" }
|
||||||
pydantic = ">=1.10.0,<3.0.0,!=2.5.0,!=2.5.1,!=2.10.0,!=2.10.1"
|
pydantic = ">=1.10.0,<3.0.0,!=2.5.0,!=2.5.1,!=2.10.0,!=2.10.1"
|
||||||
|
|
||||||
websockets = { version = ">=10.0", optional = true }
|
websockets = { version = ">=15.0", optional = true }
|
||||||
Quart = { version = ">=0.18.0,<1.0.0", optional = true }
|
Quart = { version = ">=0.18.0,<1.0.0", optional = true }
|
||||||
fastapi = { version = ">=0.93.0,<1.0.0", optional = true }
|
fastapi = { version = ">=0.93.0,<1.0.0", optional = true }
|
||||||
aiohttp = { version = "^3.11.0", extras = ["speedups"], optional = true }
|
aiohttp = { version = "^3.11.0", extras = ["speedups"], optional = true }
|
||||||
@ -46,7 +46,7 @@ uvicorn = { version = ">=0.20.0,<1.0.0", extras = [
|
|||||||
], optional = true }
|
], optional = true }
|
||||||
|
|
||||||
[tool.poetry.group.dev.dependencies]
|
[tool.poetry.group.dev.dependencies]
|
||||||
ruff = "^0.9.0"
|
ruff = "^0.12.0"
|
||||||
nonemoji = "^0.1.2"
|
nonemoji = "^0.1.2"
|
||||||
pre-commit = "^4.0.0"
|
pre-commit = "^4.0.0"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user