from websockets import * import asyncio, json, signal, sys class WebSocketServer: server: Server = None def __init__(self) -> None: asyncio.run(self.main()) async def main(self) -> None: async with serve(self.handleConnection, "", 8765) as sv: self.server = sv loop: asyncio.AbstractEventLoop = asyncio.get_running_loop() loop.add_signal_handler(signal.SIGTERM, self.closeServer) loop.add_reader(0, self.serverController) await self.server.wait_closed() async def handleConnection(self, connection: ServerConnection) -> None: #TODO: Make this actually do something print(connection.remote_address) message: str = await connection.recv() print(f"Server received: {message}") response: str = f"Hello {connection.id}. You sent {message}" await connection.send(response) print(f"Server replied: {response}") def serverController(self) -> None: #TODO: Make ways of actually controlling the server with this print("Server controller. Now die") print(sys.stdin.readline()) self.closeServer() def closeServer(self) -> None: print("Closing down") self.server.close() if __name__ == "__main__": WebSocketServer() print("see ya suckers")