We’ll use the websockets
library to handle communication between players.
import asyncio
import websockets
import json
game = TicTacToe()
players = []
async def handler(websocket, path):
global players
players.append(websocket)
try:
async for message in websocket:
data = json.loads(message)
if "move" in data:
position = data["move"]
response = game.make_move(position)
for player in players:
await player.send(json.dumps({"board": game.board, "status": response}))
except websockets.ConnectionClosed:
players.remove(websocket)
start_server = websockets.serve(handler, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()