Coverage for src/lexigram/web/websocket/__init__.py: 100%
9 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 Module.
3Provides base classes and decorators for building WebSocket handlers
4and gateways.
6Low-level handler example::
8 from lexigram.web.websocket import AbstractWebSocketHandler, websocket_handler
10 @websocket_handler("/ws/chat/{room}")
11 class ChatHandler(AbstractWebSocketHandler):
12 async def on_connect(self, websocket):
13 await websocket.accept()
14 async def on_message(self, websocket, message):
15 await self.broadcast(message)
16 async def on_disconnect(self, websocket):
17 pass
19High-level gateway example::
21 from lexigram.web.websocket import WebSocketGateway, subscribe_message, websocket_gateway
23 @websocket_gateway("/ws/chat")
24 class ChatGateway(WebSocketGateway):
25 @subscribe_message("chat.send")
26 async def handle_send(self, ws, payload):
27 await self.broadcast(payload)
28"""
30from __future__ import annotations
32from lexigram.web.transport.websocket_guards import (
33 GuardedWebSocket,
34 execute_websocket_guards,
35)
36from lexigram.web.transport.websockets import WebSocket
37from lexigram.web.websocket.connection_id import ConnectionIDManager
38from lexigram.web.websocket.decorators import websocket_handler
39from lexigram.web.websocket.gateway import (
40 WebSocketGateway,
41 on_connect,
42 on_disconnect,
43 on_error,
44 subscribe_message,
45 websocket_gateway,
46)
47from lexigram.web.websocket.handler import AbstractWebSocketHandler
48from lexigram.web.websocket.rate_limiter import WebSocketRateLimiter
50__all__ = [
51 "AbstractWebSocketHandler",
52 "ConnectionIDManager",
53 "GuardedWebSocket",
54 "WebSocket",
55 "WebSocketGateway",
56 "WebSocketRateLimiter",
57 "execute_websocket_guards",
58 "on_connect",
59 "on_disconnect",
60 "on_error",
61 "subscribe_message",
62 "websocket_gateway",
63 "websocket_handler",
64]