Child Node Framework Update
parent
d908ff22d2
commit
d7409db6f0
|
|
@ -13,9 +13,6 @@ module.exports = function(s,config,lang,app,io){
|
|||
onWebSocketData,
|
||||
onDataConnectionDisconnect,
|
||||
} = require('./childNode/utils.js')(s,config,lang,app,io)
|
||||
const {
|
||||
onDataFromMasterNode,
|
||||
} = require('./childNode/childUtils.js')(s,config,lang,app,io)
|
||||
s.childNodes = {};
|
||||
const childNodesConnectionIndex = {};
|
||||
const childNodeHTTP = express();
|
||||
|
|
@ -38,15 +35,14 @@ module.exports = function(s,config,lang,app,io){
|
|||
console.log(lang.Shinobi+' - CHILD NODE SERVER : '+childNodeBindIP + ':' + config.childNodes.port);
|
||||
});
|
||||
s.debugLog('childNodeWebsocket.attach(childNodeServer)')
|
||||
//send data to child node function (experimental)
|
||||
s.cx = function(data,connectionId,x){
|
||||
if(!z.mid && !z.d){
|
||||
console.error('Missing ID')
|
||||
}else if(x){
|
||||
//send data to child node function
|
||||
s.cx = function(data,connectionId,senderObject){
|
||||
// if(senderObject){
|
||||
// data.sentFrom = senderObject.id;
|
||||
// childNodesConnectionIndex[y].sendJson(data)
|
||||
// }else{
|
||||
childNodesConnectionIndex[y].sendJson(data)
|
||||
}else{
|
||||
childNodeWebsocket.to(y).emit('c',z)
|
||||
}
|
||||
// }
|
||||
}
|
||||
//child Node Websocket
|
||||
childNodeWebsocket.on('connection', function (client, req) {
|
||||
|
|
@ -76,16 +72,26 @@ module.exports = function(s,config,lang,app,io){
|
|||
}else
|
||||
//setup Child for childNodes
|
||||
if(config.childNodes.enabled === true && config.childNodes.mode === 'child' && config.childNodes.host){
|
||||
const {
|
||||
initiateConnectionToMasterNode,
|
||||
onDisconnectFromMasterNode,
|
||||
onDataFromMasterNode,
|
||||
} = require('./childNode/childUtils.js')(s,config,lang,app,io)
|
||||
s.connectedToMasterNode = false;
|
||||
const childIO = createWebSocketClient('ws://'+config.childNodes.host,{
|
||||
onMessage: onDataFromMasterNode
|
||||
})
|
||||
s.cx = function(data){
|
||||
function sendDataToMasterNode(data){
|
||||
x.socketKey = config.childNodes.key;
|
||||
childIO.send(JSON.stringify(data));
|
||||
}
|
||||
s.tx = function(x,y){s.cx({f:'s.tx',data:x,to:y})}
|
||||
s.userLog = function(x,y){s.cx({f:'s.userLog',mon:x,data:y})}
|
||||
s.cx = sendDataToMasterNode;
|
||||
s.tx = function(x,y){
|
||||
sendDataToMasterNode({f:'s.tx',data:x,to:y})
|
||||
}
|
||||
s.userLog = function(x,y){
|
||||
sendDataToMasterNode({f:'s.userLog',mon:x,data:y})
|
||||
}
|
||||
s.queuedSqlCallbacks = {}
|
||||
s.sqlQuery = function(query,values,onMoveOn){
|
||||
var callbackId = s.gid()
|
||||
|
|
@ -95,40 +101,18 @@ module.exports = function(s,config,lang,app,io){
|
|||
var values = [];
|
||||
}
|
||||
if(typeof onMoveOn === 'function')s.queuedSqlCallbacks[callbackId] = onMoveOn;
|
||||
s.cx({f:'sql',query:query,values:values,callbackId:callbackId});
|
||||
sendDataToMasterNode({f:'sql',query:query,values:values,callbackId:callbackId});
|
||||
}
|
||||
s.knexQuery = function(options,onMoveOn){
|
||||
var callbackId = s.gid()
|
||||
if(typeof onMoveOn === 'function')s.queuedSqlCallbacks[callbackId] = onMoveOn;
|
||||
s.cx({f:'knex',options:options,callbackId:callbackId});
|
||||
sendDataToMasterNode({f:'knex',options:options,callbackId:callbackId});
|
||||
}
|
||||
setInterval(async () => {
|
||||
const cpu = await s.cpuUsage()
|
||||
s.cx({
|
||||
f: 'cpu',
|
||||
cpu: parseFloat(cpu)
|
||||
})
|
||||
},5000)
|
||||
childIO.on('connect', function(d){
|
||||
console.log('CHILD CONNECTION SUCCESS')
|
||||
s.cx({
|
||||
f : 'init',
|
||||
port : config.port,
|
||||
coreCount : s.coreCount,
|
||||
availableHWAccels : config.availableHWAccels
|
||||
})
|
||||
childIO.on('connect', function(){
|
||||
initiateConnectionToMasterNode()
|
||||
})
|
||||
childIO.on('disconnect',function(d){
|
||||
s.connectedToMasterNode = false;
|
||||
var groupKeys = Object.keys(s.group)
|
||||
groupKeys.forEach(function(groupKey){
|
||||
var activeMonitorKeys = Object.keys(s.group[groupKey].activeMonitors)
|
||||
activeMonitorKeys.forEach(function(monitorKey){
|
||||
var activeMonitor = s.group[groupKey].activeMonitors[monitorKey]
|
||||
if(activeMonitor && activeMonitor.spawn && activeMonitor.spawn.close)activeMonitor.spawn.close()
|
||||
if(activeMonitor && activeMonitor.spawn && activeMonitor.spawn.kill)activeMonitor.spawn.kill()
|
||||
})
|
||||
})
|
||||
childIO.on('disconnect',function(){
|
||||
onDisconnectFromMasterNode()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
module.exports = function(s,config,lang,app,io){
|
||||
const queuedSqlCallbacks = s.queuedSqlCallbacks;
|
||||
var checkCpuInterval = null;
|
||||
function onDataFromMasterNode(d) {
|
||||
switch(d.f){
|
||||
case'sqlCallback':
|
||||
|
|
@ -10,7 +11,7 @@ module.exports = function(s,config,lang,app,io){
|
|||
}
|
||||
break;
|
||||
case'init_success':
|
||||
s.connected=true;
|
||||
s.connectedToMasterNode = true;
|
||||
s.other_helpers=d.child_helpers;
|
||||
break;
|
||||
case'kill':
|
||||
|
|
@ -42,7 +43,46 @@ module.exports = function(s,config,lang,app,io){
|
|||
break;
|
||||
}
|
||||
}
|
||||
function initiateConnectionToMasterNode(){
|
||||
console.log('CHILD CONNECTION SUCCESS')
|
||||
s.cx({
|
||||
f : 'init',
|
||||
port : config.port,
|
||||
coreCount : s.coreCount,
|
||||
availableHWAccels : config.availableHWAccels
|
||||
})
|
||||
clearInterval(checkCpuInterval)
|
||||
checkCpuInterval = setInterval(async () => {
|
||||
sendCurrentCpuUsage()
|
||||
},5000)
|
||||
}
|
||||
function onDisconnectFromMasterNode(){
|
||||
s.connectedToMasterNode = false;
|
||||
destroyAllMonitorProcesses()
|
||||
}
|
||||
function destroyAllMonitorProcesses(){
|
||||
var groupKeys = Object.keys(s.group)
|
||||
groupKeys.forEach(function(groupKey){
|
||||
var activeMonitorKeys = Object.keys(s.group[groupKey].activeMonitors)
|
||||
activeMonitorKeys.forEach(function(monitorKey){
|
||||
var activeMonitor = s.group[groupKey].activeMonitors[monitorKey]
|
||||
if(activeMonitor && activeMonitor.spawn && activeMonitor.spawn.close)activeMonitor.spawn.close()
|
||||
if(activeMonitor && activeMonitor.spawn && activeMonitor.spawn.kill)activeMonitor.spawn.kill()
|
||||
})
|
||||
})
|
||||
}
|
||||
function sendCurrentCpuUsage(){
|
||||
const cpu = await s.cpuUsage()
|
||||
s.cx({
|
||||
f: 'cpu',
|
||||
cpu: parseFloat(cpu)
|
||||
})
|
||||
}
|
||||
return {
|
||||
onDataFromMasterNode,
|
||||
initiateConnectionToMasterNode,
|
||||
onDisconnectFromMasterNode,
|
||||
destroyAllMonitorProcesses,
|
||||
sendCurrentCpuUsage,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue