refactor web if

This commit is contained in:
Stefan Steininger
2024-01-28 14:04:18 +01:00
parent a3fdb0c361
commit 70c2a1b9d4
14 changed files with 35 additions and 23 deletions

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 777 B

After

Width:  |  Height:  |  Size: 777 B

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 748 B

After

Width:  |  Height:  |  Size: 748 B

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -7,23 +7,28 @@ import chess
from chesspp import engine from chesspp import engine
_DIR = os.path.abspath(os.path.dirname(__file__)) _DIR = os.path.abspath(os.path.dirname(__file__))
_INDEX = os.path.join(_DIR, "res/index.html") _DATA_DIR = os.path.abspath(os.path.join(_DIR, "static_data"))
_INDEX = os.path.join(_DATA_DIR, "index.html")
def load_index():
def load_index() -> str:
"""
Load and return the chessboard html file from disk
"""
with open(_INDEX, 'r') as fp: with open(_INDEX, 'r') as fp:
return fp.read() return fp.read()
index_data = load_index()
async def handle_index(request):
#raise web.HTTPFound('/index.html')
return web.Response(text=load_index(), content_type='text/html')
class Simulate: class Simulate:
def __init__(self): """ Run a simulation of two engines"""
self.white = engine.ClassicMctsEngine(chess.WHITE) def __init__(self, engine_white=None, engine_black=None):
self.black = engine.ClassicMctsEngine(chess.BLACK) if engine_white is None:
engine_white = engine.ClassicMctsEngine(chess.WHITE)
if engine_black is None:
engine_black = engine.ClassicMctsEngine(chess.BLACK)
self.white = engine_white
self.black = engine_black
def run(self): def run(self):
board = chess.Board() board = chess.Board()
@@ -36,11 +41,18 @@ class Simulate:
is_white_playing = not is_white_playing is_white_playing = not is_white_playing
async def websocket_handler(request): async def handle_index(request) -> web.Response:
""" Entry point of webpage, returns the index html"""
return web.Response(text=load_index(), content_type='text/html')
async def handle_websocket(request):
""" Handles a websocket connection to the frontend"""
ws = web.WebSocketResponse() ws = web.WebSocketResponse()
await ws.prepare(request) await ws.prepare(request)
async def wait_msg(): async def wait_msg():
""" Handles messages from client """
async for msg in ws: async for msg in ws:
if msg.type == aiohttp.WSMsgType.TEXT: if msg.type == aiohttp.WSMsgType.TEXT:
if msg.data == 'close': if msg.data == 'close':
@@ -49,6 +61,7 @@ async def websocket_handler(request):
print(f'ws connection closed with exception {ws.exception()}') print(f'ws connection closed with exception {ws.exception()}')
async def turns(): async def turns():
""" Simulates the game and sends the response to the client """
runner = Simulate().run() runner = Simulate().run()
def sim(): def sim():
return next(runner, None) return next(runner, None)
@@ -63,17 +76,16 @@ async def websocket_handler(request):
tg.create_task(turns()) tg.create_task(turns())
print('websocket connection closed') print('websocket connection closed')
return ws return ws
def run_app():
app = web.Application() app = web.Application()
app.add_routes([ app.add_routes([
web.get('/', handle_index), web.get('/', handle_index),
#web.static('/', os.path.join(_DIR, 'res')), web.get('/ws', handle_websocket),
web.static('/img/chesspieces/wikipedia/', os.path.join(_DIR, 'res')), web.static('/img/chesspieces/wikipedia/', _DATA_DIR),
web.get('/ws', websocket_handler),
]) ])
web.run_app(app)
if __name__ == '__main__': if __name__ == '__main__':
web.run_app(app) run_app()