MCPcopy Index your code
hub / github.com/nonebot/nonebot2 / websocket

Method websocket

nonebot/drivers/aiohttp.py:285–335  ·  view source on GitHub ↗
(self, setup: Request)

Source from the content-addressed store, hash-verified

283 @override
284 @asynccontextmanager
285 async def websocket(self, setup: Request) -> AsyncGenerator["WebSocket", None]:
286 if setup.version == HTTPVersion.H10:
287 version = aiohttp.HttpVersion10
288 elif setup.version == HTTPVersion.H11:
289 version = aiohttp.HttpVersion11
290 else:
291 raise RuntimeError(f"Unsupported HTTP version: {setup.version}")
292
293 timeout = None
294 if isinstance(setup.timeout, Timeout):
295 timeout_kwargs: dict[str, float | None] = exclude_unset(
296 {
297 "ws_receive": setup.timeout.read,
298 "ws_close": (
299 setup.timeout.total
300 if setup.timeout.close is UNSET
301 else setup.timeout.close
302 ),
303 }
304 )
305 if timeout_kwargs:
306 timeout = aiohttp.ClientWSTimeout(**timeout_kwargs)
307 elif setup.timeout is not UNSET:
308 timeout = aiohttp.ClientWSTimeout(
309 ws_receive=setup.timeout, # type: ignore
310 ws_close=setup.timeout, # type: ignore
311 )
312
313 if timeout is None:
314 timeout = aiohttp.ClientWSTimeout(
315 **exclude_unset(
316 {
317 "ws_receive": DEFAULT_TIMEOUT.read,
318 "ws_close": (
319 DEFAULT_TIMEOUT.total
320 if DEFAULT_TIMEOUT.close is UNSET
321 else DEFAULT_TIMEOUT.close
322 ),
323 }
324 )
325 )
326
327 async with aiohttp.ClientSession(version=version, trust_env=True) as session:
328 async with session.ws_connect(
329 setup.url,
330 method=setup.method,
331 timeout=timeout,
332 headers=setup.headers,
333 proxy=setup.proxy,
334 ) as ws:
335 yield WebSocket(request=setup, session=session, websocket=ws)
336
337 @override
338 def get_session(

Callers 3

test_websocket_clientFunction · 0.45

Calls 2

exclude_unsetFunction · 0.90
WebSocketClass · 0.70

Tested by 3

test_websocket_clientFunction · 0.36