mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 07:03:53 +08:00
50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
import asyncio
|
|
from config.logger import setup_logging
|
|
from config.settings import load_config, check_config_file
|
|
from core.websocket_server import WebSocketServer
|
|
from manager.http_server import WebUI
|
|
from aiohttp import web
|
|
from core.utils.util import get_local_ip
|
|
|
|
TAG = __name__
|
|
|
|
|
|
async def main():
|
|
check_config_file()
|
|
logger = setup_logging()
|
|
config = load_config()
|
|
|
|
# 启动 WebSocket 服务器
|
|
ws_server = WebSocketServer(config)
|
|
ws_task = asyncio.create_task(ws_server.start())
|
|
|
|
# 启动 WebUI 服务器
|
|
webui_runner = None
|
|
if config['manager'].get('enabled', False):
|
|
server_config = config["manager"]
|
|
host = server_config["ip"]
|
|
port = server_config["port"]
|
|
try:
|
|
webui = WebUI()
|
|
runner = web.AppRunner(webui.app)
|
|
await runner.setup()
|
|
site = web.TCPSite(runner, host, port)
|
|
await site.start()
|
|
webui_runner = runner
|
|
local_ip = get_local_ip()
|
|
logger.bind(tag=TAG).info(f"WebUI server is running at http://{local_ip}:{port}")
|
|
except Exception as e:
|
|
logger.bind(tag=TAG).error(f"Failed to start WebUI server: {e}")
|
|
|
|
try:
|
|
# 等待 WebSocket 服务器运行
|
|
await ws_task
|
|
finally:
|
|
# 清理 WebUI 服务器
|
|
if webui_runner:
|
|
await webui_runner.cleanup()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|