shortdeck1.3:ui and fix

This commit is contained in:
2025-10-11 18:24:24 +08:00
parent 4763f9a630
commit 8f30e75e1a
69 changed files with 2753 additions and 97 deletions

75
waitress_server.py Normal file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env python3
import sys
import os
from pathlib import Path
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
if __name__ == "__main__":
print("🚀 使用Waitress启动原始FastAPI扑克服务器...")
print("📍 服务器地址: http://127.0.0.1:8005")
print("🎮 游戏界面: http://127.0.0.1:8005/client/index.html")
print("✅ 使用原始ArenaGame实现")
print("🪟 Windows优化版本")
try:
from shortdeck_server.main import app
from waitress import serve
def wsgi_app(environ, start_response):
import asyncio
import json
from urllib.parse import parse_qs
method = environ['REQUEST_METHOD']
path = environ['PATH_INFO']
query_string = environ.get('QUERY_STRING', '')
scope = {
'type': 'http',
'method': method,
'path': path,
'query_string': query_string.encode(),
'headers': [(k.lower().replace('_', '-').encode(), v.encode())
for k, v in environ.items() if k.startswith('HTTP_')],
}
response_data = {'status': 500, 'headers': [], 'body': b''}
async def receive():
content_length = int(environ.get('CONTENT_LENGTH', 0))
if content_length > 0:
body = environ['wsgi.input'].read(content_length)
return {'type': 'http.request', 'body': body}
return {'type': 'http.request', 'body': b''}
async def send(message):
if message['type'] == 'http.response.start':
response_data['status'] = message['status']
response_data['headers'] = message.get('headers', [])
elif message['type'] == 'http.response.body':
response_data['body'] += message.get('body', b'')
try:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(app(scope, receive, send))
loop.close()
except Exception as e:
response_data['status'] = 500
response_data['body'] = f"Server Error: {str(e)}".encode()
status = f"{response_data['status']} OK"
headers = [(h[0].decode(), h[1].decode()) for h in response_data['headers']]
start_response(status, headers)
return [response_data['body']]
serve(wsgi_app, host='127.0.0.1', port=8005, threads=4)
except KeyboardInterrupt:
print("\n 服务器停止")
except Exception as e:
print(f" 服务器错误: {e}")
import traceback
traceback.print_exc()