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

1"""WebSocket Module. 

2 

3Provides base classes and decorators for building WebSocket handlers 

4and gateways. 

5 

6Low-level handler example:: 

7 

8 from lexigram.web.websocket import AbstractWebSocketHandler, websocket_handler 

9 

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 

18 

19High-level gateway example:: 

20 

21 from lexigram.web.websocket import WebSocketGateway, subscribe_message, websocket_gateway 

22 

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""" 

29 

30from __future__ import annotations 

31 

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 

49 

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]