Frontend
This commit is contained in:
@ -5,6 +5,7 @@ from threading import Thread
|
||||
|
||||
import websockets
|
||||
from websockets import WebSocketServerProtocol
|
||||
from websockets.exceptions import ConnectionClosedOK
|
||||
|
||||
from hopper.models.ws_dto import GameStateDto
|
||||
from settings import settings
|
||||
@ -15,12 +16,18 @@ class WSServer(Thread):
|
||||
self.connected_clients = set[WebSocketServerProtocol]()
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
async def ws_handler(self, websocket: WebSocketServerProtocol) -> None:
|
||||
async def handler(self, websocket: WebSocketServerProtocol) -> None:
|
||||
self.connected_clients.add(websocket)
|
||||
logging.info(f"Add client: {websocket.id}")
|
||||
|
||||
try:
|
||||
await self.send_game_state_to_client(websocket)
|
||||
connected = True
|
||||
while connected:
|
||||
try:
|
||||
message = await websocket.recv()
|
||||
except ConnectionClosedOK:
|
||||
connected = False
|
||||
finally:
|
||||
self.connected_clients.remove(websocket)
|
||||
logging.info(f"Remove client: {websocket.id}")
|
||||
@ -63,7 +70,7 @@ class WSServer(Thread):
|
||||
)
|
||||
|
||||
async with websockets.serve(
|
||||
ws_handler=self.ws_handler,
|
||||
ws_handler=self.handler,
|
||||
host=settings.ws_server.HOST,
|
||||
port=settings.ws_server.PORT,
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user