observer added, database added to improve fault tolerance, config fixed, ping added, port allocation improved, session observer added, multiple checks added, run process improved, process running check added, fault tolerance improved

This commit is contained in:
C
2023-01-25 17:57:39 +05:00
parent c2bf9dce67
commit e3e2cc97aa
19 changed files with 2475 additions and 1 deletions
+78
View File
@@ -0,0 +1,78 @@
const {spawn, fork} = require('node:child_process')
const is_running = require('is-running')
const config = require('../../config')
const webrtc_server_path = config.webrtc_server_path
const app_args_static = config.app_args.static
const app_port_arg = config.app_args.runtime.port
const fs = require('fs')
const is_proc_running = (pid) => {
return is_running(pid)
}
const is_proc_running_async = async (pid, check_time) => {
var timeout_count = 0
var check_times = 10
while (true) {
++timeout_count
if (!is_proc_running(pid)) {
return false
}
if (timeout_count > check_times) {
return true
}
await new Promise(resolve => setTimeout(resolve, check_time / check_times))
}
}
const run_webrtc = async (webrtc_port, app_port) => {
if (!fs.existsSync(webrtc_server_path)) {
return null
}
var webrtc_proc
try {
webrtc_proc = fork(webrtc_server_path, [webrtc_port.toString(), app_port.toString()], {
detached: true
})
} catch (err) {
return null
}
//var proc_status = await is_proc_running_async(webrtc_proc.pid, 500)
return (webrtc_proc) ? webrtc_proc.pid : null
}
const run_app = async (app_path, app_port) => {
var app_proc
try {
app_proc = spawn(app_path, [].concat(app_args_static,
[app_port_arg + app_port.toString()]), {
detached: true
})
} catch (err) {
return null
}
return (app_proc) ? app_proc.pid : null
}
const kill_proc = (pid) => {
if (process.platform === 'win32') {
spawn('taskkill', ['/pid', pid, '/f', '/t'])
}
else {
process.kill(pid)
}
}
module.exports = {
run_webrtc,
run_app,
is_proc_running,
is_proc_running_async,
kill_proc
}