MCPcopy Create free account
hub / github.com/nonebot/nonebot2 / WebSocket

Class WebSocket

nonebot/drivers/aiohttp.py:357–428  ·  view source on GitHub ↗

AIOHTTP Websocket Wrapper

Source from the content-addressed store, hash-verified

355
356
357class WebSocket(BaseWebSocket):
358 """AIOHTTP Websocket Wrapper"""
359
360 def __init__(
361 self,
362 *,
363 request: Request,
364 session: aiohttp.ClientSession,
365 websocket: aiohttp.ClientWebSocketResponse,
366 ):
367 super().__init__(request=request)
368 self.session = session
369 self.websocket = websocket
370
371 @property
372 @override
373 def closed(self):
374 return self.websocket.closed
375
376 @override
377 async def accept(self):
378 raise NotImplementedError
379
380 @override
381 async def close(self, code: int = 1000, reason: str = ""):
382 await self.websocket.close(code=code, message=reason.encode("utf-8"))
383 await self.session.close()
384
385 async def _receive(self) -> aiohttp.WSMessage:
386 msg = await self.websocket.receive()
387 if msg.type in (
388 aiohttp.WSMsgType.CLOSE,
389 aiohttp.WSMsgType.CLOSING,
390 aiohttp.WSMsgType.CLOSED,
391 ):
392 raise WebSocketClosed(self.websocket.close_code or 1006)
393 return msg
394
395 @override
396 async def receive(self) -> str:
397 msg = await self._receive()
398 if msg.type not in (aiohttp.WSMsgType.TEXT, aiohttp.WSMsgType.BINARY):
399 raise TypeError(
400 f"WebSocket received unexpected frame type: {msg.type}, {msg.data!r}"
401 )
402 return msg.data
403
404 @override
405 async def receive_text(self) -> str:
406 msg = await self._receive()
407 if msg.type != aiohttp.WSMsgType.TEXT:
408 raise TypeError(
409 f"WebSocket received unexpected frame type: {msg.type}, {msg.data!r}"
410 )
411 return msg.data
412
413 @override
414 async def receive_bytes(self) -> bytes:

Callers 1

websocketMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected