diff --git a/run.py b/run.py index 86b5a4a..fef3af2 100644 --- a/run.py +++ b/run.py @@ -89,6 +89,28 @@ if __name__ == "__main__": elif mode == "quic": logging.info("Starting in QUIC datagram mode") asyncio.run(run_quic()) + elif mode == "net": + logging.info("Starting in combined WebTransport+QUIC mode") + from server.webtransport_server import WebTransportServer + from server.quic_transport import QuicWebTransportServer + from server.multi_transport import MultiTransport + cfg = ServerConfig() + host_wt = os.environ.get("WT_HOST", os.environ.get("QUIC_HOST", "0.0.0.0")) + port_wt = int(os.environ.get("WT_PORT", os.environ.get("QUIC_PORT", "4433"))) + host_quic = os.environ.get("QUIC_HOST", host_wt) + port_quic = int(os.environ.get("QUIC_PORT", "4443")) + cert = os.environ.get("WT_CERT") or os.environ.get("QUIC_CERT") + key = os.environ.get("WT_KEY") or os.environ.get("QUIC_KEY") + if not cert or not key: + raise SystemExit("WT/QUIC cert/key required: set WT_CERT/WT_KEY or QUIC_CERT/QUIC_KEY") + async def _run_net(): + server: GameServer + wt = WebTransportServer(host_wt, port_wt, cert, key, lambda d, p: server.on_datagram(d, p)) + qu = QuicWebTransportServer(host_quic, port_quic, cert, key, lambda d, p: server.on_datagram(d, p)) + m = MultiTransport(wt, qu) + server = GameServer(transport=m, config=cfg) + await asyncio.gather(m.run(), server.tick_loop()) + asyncio.run(_run_net()) else: logging.info("Starting in in-memory transport mode") asyncio.run(run_in_memory())