Some checks failed
Pre-commit / run (ubuntu-latest) (push) Has been cancelled
Deploy Sphinx documentation to Pages / build_en (ubuntu-latest, 3.10) (push) Has been cancelled
Deploy Sphinx documentation to Pages / build_zh (ubuntu-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (macos-15, 3.12) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (ubuntu-latest, 3.12) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.10) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.11) (push) Has been cancelled
Python Unittest Coverage / test (windows-latest, 3.12) (push) Has been cancelled
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
import threading
|
|
|
|
from app.client import QingjianClient
|
|
from app.config import HTTP_HOST, HTTP_PORT
|
|
from app.http_api import run_http_server
|
|
from app.logger import setup_logger
|
|
from app.task_manager import TaskManager
|
|
|
|
|
|
logger = setup_logger()
|
|
|
|
|
|
def start_http(host: str, port: int, tm: TaskManager):
|
|
run_http_server(host=host, port=port, task_manager=tm)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Qingjian CS launcher')
|
|
mode = parser.add_mutually_exclusive_group()
|
|
mode.add_argument('--api-only', action='store_true', help='only run HTTP API')
|
|
mode.add_argument('--tianwang', action='store_true', help='run HTTP API + websocket client')
|
|
parser.add_argument('--host', default=HTTP_HOST)
|
|
parser.add_argument('--port', type=int, default=HTTP_PORT)
|
|
args = parser.parse_args()
|
|
|
|
tm = TaskManager()
|
|
|
|
if args.api_only:
|
|
logger.info('启动模式: API Only %s:%s', args.host, args.port)
|
|
start_http(args.host, args.port, tm)
|
|
return
|
|
|
|
if args.tianwang:
|
|
logger.info('启动模式: Tianwang (API + WebSocket)')
|
|
th = threading.Thread(target=start_http, args=(args.host, args.port, tm), daemon=True)
|
|
th.start()
|
|
|
|
logger.info('启动模式: WebSocket')
|
|
QingjianClient().run()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|