60 lines
1.8 KiB
Python
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 )
|