diff --git a/multi_user_bridge.py b/multi_user_bridge.py index df37ea1a..dd2c211d 100644 --- a/multi_user_bridge.py +++ b/multi_user_bridge.py @@ -2880,7 +2880,7 @@ def main(): # Start world tick system world_tick_system.start() - server = HTTPServer((BRIDGE_HOST, BRIDGE_PORT), BridgeHandler) + server = ThreadingHTTPServer((BRIDGE_HOST, BRIDGE_PORT), BridgeHandler) server.serve_forever() diff --git a/world/multi_user_bridge.py b/world/multi_user_bridge.py index 87eebcb4..73c801a7 100644 --- a/world/multi_user_bridge.py +++ b/world/multi_user_bridge.py @@ -26,11 +26,18 @@ import threading import hashlib import os import sys -from http.server import HTTPServer, BaseHTTPRequestHandler +from http.server import BaseHTTPRequestHandler, HTTPServer +from socketserver import ThreadingMixIn from pathlib import Path from datetime import datetime from typing import Optional + +class ThreadingHTTPServer(ThreadingMixIn, HTTPServer): + """Thread-per-request HTTP server for concurrent user handling.""" + daemon_threads = True + + # ── Configuration ────────────────────────────────────────────────────── BRIDGE_PORT = int(os.environ.get('TIMMY_BRIDGE_PORT', 4004)) @@ -274,7 +281,7 @@ def main(): print(f" POST /bridge/move — Move user to room (user_id, room)") print() - server = HTTPServer((BRIDGE_HOST, BRIDGE_PORT), BridgeHandler) + server = ThreadingHTTPServer((BRIDGE_HOST, BRIDGE_PORT), BridgeHandler) server.serve_forever()