Transport: integrate aioquic QUIC datagram server skeleton (QuicWebTransportServer) and QUIC mode in run.py
- 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
This commit is contained in:
36
run.py
36
run.py
@@ -1,10 +1,36 @@
|
||||
from server.server import main
|
||||
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__":
|
||||
import asyncio
|
||||
|
||||
try:
|
||||
asyncio.run(main())
|
||||
# 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user