aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/hrc/service/websocket
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2024-09-19 14:44:33 +0800
committerHsiangNianian <i@jyunko.cn>2024-09-19 14:44:33 +0800
commite9a780496f7ce067e0d8d51ce1d62e48c9f2a8d9 (patch)
treea3e31e07fd001baa1cfce9ceebcdfed58b50bcda /hrc/service/websocket
parent9e18d7ebf7a17bb7d7d169da3a3cefde0956a9f9 (diff)
downloadHydroRollCore-e9a780496f7ce067e0d8d51ce1d62e48c9f2a8d9.tar.gz
HydroRollCore-e9a780496f7ce067e0d8d51ce1d62e48c9f2a8d9.zip
feat(core): Implement Service class and related functionalities
Co-authored-by: yuzhe <YUZHEthefool@users.noreply.github.com>
Diffstat (limited to 'hrc/service/websocket')
-rw-r--r--hrc/service/websocket/__init__.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/hrc/service/websocket/__init__.py b/hrc/service/websocket/__init__.py
new file mode 100644
index 0000000..3a7f089
--- /dev/null
+++ b/hrc/service/websocket/__init__.py
@@ -0,0 +1,30 @@
+from typing import Any, Coroutine
+from typing_extensions import override
+from aiohttp import web, ClientWebSocketResponse
+
+from hrc.service.utils import WebSocketService
+from hrc.event import Event
+from hrc.log import logger
+
+from aiohttp import web
+
+class WebSocketTestEvent(Event["WebSocketTestEvent"]):
+ message: str
+
+class WebSocketTestService(WebSocketService[WebSocketTestEvent, None]):
+ name: str = "websocket_test_service"
+ service_type: str = "reverse-ws"
+ host: str = "127.0.0.1"
+ port: int = 8765
+ url: str = "/"
+
+ @override
+ async def handle_reverse_ws_response(self, request: web.Request) -> Coroutine[Any, Any, ClientWebSocketResponse]:
+ event = WebSocketTestEvent(
+ service=self,
+ type="message",
+ message=await request.text()
+ )
+ logger.info(f"Receive {event}")
+ await self.handle_event(event)
+ return web.Response() \ No newline at end of file