Coverage for src/lexigram/web/transport/websockets.py: 61%
23 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 04:37 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 04:37 +0800
1"""WebSocket support"""
3from __future__ import annotations
5from typing import Any
7from starlette.websockets import WebSocket as StarletteWebSocket
10class WebSocket:
11 """Lexigram WebSocket wrapper around Starlette WebSocket"""
13 def __init__(self, starlette_ws: StarletteWebSocket):
14 self._starlette = starlette_ws
16 async def accept(self, subprotocol: str | None = None) -> None:
17 await self._starlette.accept(subprotocol=subprotocol)
19 async def close(self, code: int = 1000) -> None:
20 await self._starlette.close(code=code)
22 async def receive_text(self) -> str:
23 return await self._starlette.receive_text()
25 async def receive_json(self) -> Any:
26 return await self._starlette.receive_json()
28 async def send_text(self, data: str) -> None:
29 await self._starlette.send_text(data)
31 async def send_json(self, data: Any) -> None:
32 await self._starlette.send_json(data)
34 async def send_bytes(self, data: bytes) -> None:
35 await self._starlette.send_bytes(data)
37 @property
38 def state(self) -> Any:
39 """WebSocket state for middleware"""
40 return self._starlette.state