- New server/quic_transport.py using aioquic to accept QUIC connections and datagrams - run.py: QUIC mode when QUIC_CERT/QUIC_KEY provided; else in-memory - requirements.txt: aioquic + cryptography
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
import asyncio
|
|
import os
|
|
|
|
from server.server import GameServer
|
|
from server.config import ServerConfig
|
|
from server.transport import InMemoryTransport
|
|
|
|
|
|
async def main():
|
|
from server.server import GameServer
|
|
from server.transport import InMemoryTransport
|
|
|
|
cfg = ServerConfig()
|
|
server = GameServer(transport=InMemoryTransport(lambda d, p: server.on_datagram(d, p)), config=cfg)
|
|
await asyncio.gather(server.transport.run(), server.tick_loop())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
# Optional QUIC mode if env vars are provided
|
|
cert = os.environ.get("QUIC_CERT")
|
|
key = os.environ.get("QUIC_KEY")
|
|
host = os.environ.get("QUIC_HOST", "0.0.0.0")
|
|
port = int(os.environ.get("QUIC_PORT", "4433"))
|
|
if cert and key:
|
|
from server.quic_transport import QuicWebTransportServer
|
|
from server.server import GameServer
|
|
cfg = ServerConfig()
|
|
async def start_quic():
|
|
server = GameServer(transport=QuicWebTransportServer(host, port, cert, key, lambda d, p: server.on_datagram(d, p)), config=cfg)
|
|
await asyncio.gather(server.transport.run(), server.tick_loop())
|
|
asyncio.run(start_quic())
|
|
else:
|
|
asyncio.run(main())
|
|
except KeyboardInterrupt:
|
|
pass
|