diff --git a/config.js b/config.js index 00696a7..c1e78bc 100644 --- a/config.js +++ b/config.js @@ -27,8 +27,8 @@ module.exports = { "-PixelStreamingWebRTCDisableAudioSync", "-PixelStreamingHideCursor=true", "-PixelStreamingKeyFilter=ESC, CTRL", - //"-SimulcastParameters=1.0,5000000,100000000,2.0,1000000,5000000,3.0,500000,2500000", - //"-PixelStreamingHudStats=true" // usefull for debug + "-SimulcastParameters=1.0,5000000,100000000,2.0,1000000,5000000,3.0,500000,2500000", + "-PixelStreamingHudStats=true" // usefull for debug ] } } \ No newline at end of file diff --git a/src/controller/session.js b/src/controller/session.js index a50565f..14a0974 100644 --- a/src/controller/session.js +++ b/src/controller/session.js @@ -19,7 +19,7 @@ const run_session = async (req, res, next) => { let webrtc_port = await get_webrtc_port() let app_port = await get_app_port() - let sfu_port = 8889//await get_sfu_port() + let sfu_port = await get_sfu_port() if (!app_port) { next(new server_error('all app ports busy')) @@ -27,11 +27,10 @@ const run_session = async (req, res, next) => { } else if (!webrtc_port) { next(new server_error('all webrtc ports busy')) return - } - // else if (!sfu_port) { - // next(new server_error('all sfu ports busy')) - // return - // } + } else if (!sfu_port) { + next(new server_error('all sfu ports busy')) + return + } let app_pid = await run_app(app_path, app_port) if (!app_pid) { @@ -48,13 +47,13 @@ const run_session = async (req, res, next) => { return } - let sfu_pid = null //await run_sfu(sfu_port) - // if (!sfu_pid) { - // kill_proc(app_pid) - // kill_proc(webrtc_pid) - // next(new server_error('can not run sfu')) - // return - // } + let sfu_pid = await run_sfu(sfu_port) + if (!sfu_pid) { + kill_proc(app_pid) + kill_proc(webrtc_pid) + next(new server_error('can not run sfu')) + return + } let add_runnning_session_result = await database.add_running_session(session_id, title, app_pid, webrtc_pid, sfu_pid, app_port, webrtc_port, sfu_port) diff --git a/src/modules/session_observer.js b/src/modules/session_observer.js index 023489c..0e2d2c7 100644 --- a/src/modules/session_observer.js +++ b/src/modules/session_observer.js @@ -8,11 +8,23 @@ const {free_app_port, free_webrtc_port, free_sfu_port} = require('./port_alloc') const observer_timeout = 100 let pending_list = new wait_list([]) -const start_observer = () => { - check() +let can_check = true +const block_time = 30000 + +const start_observer = async () => { + if (can_check) { + check() + } setTimeout(() => start_observer(), observer_timeout) } +const block_for = (time) => { + can_check = false + setTimeout(() => { + can_check = true + }, time) +} + // check sessions in parallel const check_sessions = async (sessions) => { @@ -47,6 +59,7 @@ const check_sessions = async (sessions) => { await database.remove_running_session(session.session_id) } else { console.error('can not connect to coordinator') + block_for(block_time) } pending_list.remove(session.session_id) } @@ -57,10 +70,11 @@ const check = async () => { let sessions = await database.get_running_sessions() if (!sessions) { + block_for(block_time) return } - check_sessions(sessions) + await check_sessions(sessions) } module.exports = {