Files
3cloud-backend/websocket_server/main.py
T

60 lines
1.8 KiB
Python

# websocket_server/main.py
from flask import Flask
from flask_socketio import SocketIO
import threading
import logging
from websocket_server.config import setup_logging
from websocket_server.worker_manager import worker_dispatch_flag_check, all_worker_watchdog
from websocket_server.events import base
from runtime_urls import WEBSOCKET_SERVER_PATH, API_BASE_URL, XCLOUDIFY_API_KEY
from internal_http import install_internal_auth
install_internal_auth(API_BASE_URL, XCLOUDIFY_API_KEY)
# Setup logging
logger = setup_logging()
logger.info("Starting WebSocket server...")
# Flask app and SocketIO setup
app = Flask(__name__)
base.socketio = SocketIO(
app,
cors_allowed_origins="*",
ping_timeout=5,
ping_interval=30,
path=WEBSOCKET_SERVER_PATH
)
# Import all socket event handlers
from websocket_server.events import messages, ack, docker, libvirt, logs, terminal, vnc
messages.register_socketio_handlers(base.socketio)
ack.register_socketio_handlers(base.socketio)
docker.register_socketio_handlers(base.socketio)
libvirt.register_socketio_handlers(base.socketio)
logs.register_socketio_handlers(base.socketio)
terminal.register_socketio_handlers(base.socketio)
vnc.register_socketio_handlers(base.socketio)
# Attach routes if needed
from websocket_server import task_api
task_api.register_routes(app)
def start_background_threads():
logger.info("Starting background worker threads...")
dispatch_thread = threading.Thread(target=worker_dispatch_flag_check, daemon=True)
dispatch_thread.start()
watchdog_thread = threading.Thread(target=all_worker_watchdog, daemon=True)
watchdog_thread.start()
if __name__ == "__main__":
start_background_threads()
# TODO - Remove allow_unsafe_werkzeug
base.socketio.run(app, host="0.0.0.0", port=6001,allow_unsafe_werkzeug=True,debug=True )