Hallo,
folgendes Problem: Ich habe zum einem eine Datei siegle-server.js:
und die Datei gameServer.js die wie Folgt aussieht:
Nun wir alle 30 Sekunden die interval-Funktion ausgeführt, welche schaut ob ein GameServer gelöscht werden kann oder nicht. Falls readyToDismiss auf true gesetzt ist, soll das GameServer object gelöscht werden und wenn es false ist, soll nichts passieren. Nun habe ich jedoch das Problem, das readyToDismiss immer auf false gesetzt ist obwohl client.on('disconnect', function (){} ausgeführt wurde. Jemand eine Idee wieso dies so ist?
folgendes Problem: Ich habe zum einem eine Datei siegle-server.js:
Code:
var port = 8081;
var io = require('socket.io')(port, {pingTimeout: 60000, pingInterval:25000});
var allGameServer = [];
io.on('connection', function (socket) {
allGameServer.push(require('./gameServer/gameServer.js')(socket));
});
var dismissGameServer = function(gameServer, index, allGameServer){
console.log('GameServer with id: ' + gameServer.id + ' is ready to dismiss ? ' + gameServer.readyToDismiss);
if(gameServer.readyToDismiss){
console.info('GameServer with ID: ' + gameServer.id + ' will now be dissmissed!' );
var delGameServer = allGameServer.splice(index, 1);
delGameServer = null;
}
};
function interval(func, wait, times){
var interv = function(w, t){
return function(){
if(typeof t === "undefined" || t-- > 0){
setTimeout(interv, w);
try{
func.call(null);
}
catch(e){
t = 0;
throw e.toString();
}
}
};
}(wait, times);
setTimeout(interv, wait);
};
interval(function(){
console.info('number of GameServers: ' + allGameServer.length);
if(allGameServer.length >= 1){
console.info('Search for dismissable GameServers!');
allGameServer.forEach(dismissGameServer);
}
}, 30000);
console.log('singe-server started on Port:' + port);
und die Datei gameServer.js die wie Folgt aussieht:
Code:
module.exports = function (client){
var id = client.id;
var readyToDismiss = false;
var mysql = require('mysql');
var dbConnection = mysql.createConnection({
host : 'localhost',
user : 'DBUser',
password : 'rYddNgrb',
database : 'testbase'
});
var player;
var buildings = [];
client.on('login', function(loginData){
});
client.on('disconnect', function (){
// TODO Save Game in Database
readyToDismiss = true;
id = id + 'changed123';
console.log('GameServer with ID: ' + id + ' can now dismissed! ' + readyToDismiss);
});
console.log('New GameServer with ID: ' + id);
return{
id : id,
readyToDismiss : readyToDismiss,
}
};
Nun wir alle 30 Sekunden die interval-Funktion ausgeführt, welche schaut ob ein GameServer gelöscht werden kann oder nicht. Falls readyToDismiss auf true gesetzt ist, soll das GameServer object gelöscht werden und wenn es false ist, soll nichts passieren. Nun habe ich jedoch das Problem, das readyToDismiss immer auf false gesetzt ist obwohl client.on('disconnect', function (){} ausgeführt wurde. Jemand eine Idee wieso dies so ist?