Files
xiaozhi-esp32-server/app.py
T

50 lines
1.4 KiB
Python
Raw Permalink Normal View History

2025-02-02 23:01:14 +08:00
import asyncio
from config.logger import setup_logging
2025-02-28 19:17:36 +08:00
from config.settings import load_config, check_config_file
2025-02-15 20:31:55 +08:00
from core.websocket_server import WebSocketServer
2025-02-15 23:49:29 +08:00
from manager.http_server import WebUI
from aiohttp import web
from core.utils.util import get_local_ip
2025-02-02 23:01:14 +08:00
2025-02-18 00:07:19 +08:00
TAG = __name__
2025-02-28 19:17:36 +08:00
2025-02-02 23:01:14 +08:00
async def main():
2025-02-28 19:17:36 +08:00
check_config_file()
2025-02-18 00:07:19 +08:00
logger = setup_logging()
2025-02-02 23:01:14 +08:00
config = load_config()
2025-02-28 19:17:36 +08:00
# 启动 WebSocket 服务器
ws_server = WebSocketServer(config)
ws_task = asyncio.create_task(ws_server.start())
2025-02-15 23:49:29 +08:00
# 启动 WebUI 服务器
webui_runner = None
2025-02-15 23:49:29 +08:00
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()
2025-02-18 00:07:19 +08:00
logger.bind(tag=TAG).info(f"WebUI server is running at http://{local_ip}:{port}")
2025-02-15 23:49:29 +08:00
except Exception as e:
2025-02-18 00:07:19 +08:00
logger.bind(tag=TAG).error(f"Failed to start WebUI server: {e}")
2025-02-28 19:17:36 +08:00
try:
# 等待 WebSocket 服务器运行
await ws_task
finally:
# 清理 WebUI 服务器
if webui_runner:
await webui_runner.cleanup()
2025-02-02 23:01:14 +08:00
2025-02-28 19:17:36 +08:00
2025-02-02 23:01:14 +08:00
if __name__ == "__main__":
asyncio.run(main())