我有一个问题,我想从FeederBot函数内部访问data.names,这样我就可以访问从客户端发出的名字了。但我不知道该怎么做。我希望在feed.nickname = data.names的feed bot中访问该变量。有什么帮助吗?
io.on('connection', function(socket) {
socket.on('login', function(data) {
console.log("User connected with id:" + data.uuid + " Bot names: " + data.names);
socket.room = data.uuid;
socket.join(data.uuid);
if (data.type == "server") {
io.sockets.in(socket.room).emit("force-login", "server-booted-up");
}
}.bind(this));
socket.on('pos', function(data) {
//console.log(socket.room + " : " + data);
io.sockets.in(socket.room).emit('pos', data);
});
socket.on('cmd', function(data) {
console.log(data);
io.sockets.in(socket.room).emit('cmd', data);
});
socket.on("spawn-count", function(data) {
io.sockets.in(socket.room).emit("spawn-count", data);
});
socket.emit("force-login", "startup");
});
function FeederBot(bot_id, agent, bot_number, server) {
this.bot_id = bot_id; //ID of bot for logging
this.interval_id = 0; //here we will store setInterval's ID
this.ball_id = null;
this.server = ''; //server address will be stored here
this.client = new AgarioClient('Bot_' + this.bot_id); //creates new client
this.client.debug = 0;
this.client.agent = agent;
this.client.headers['user-agent'] = config.userAgent;
if (facebookManager.hasAvailableToken()) {
this.client.auth_token = facebookManager.getToken();
}
this.isOnFeedMission = false; this.nickname = "Exper"
this.lastsent = {minx: 0, miny: 0, maxx: 0, maxy: 0};
this.onboard_client(server, bot_number);
}
答案 0 :(得分:1)
var outsideVar = null;
function functionOne() {
outsideVar = 1;
}
function functionTwo() {
console.log(outsideVar);
}
functionOne(); // set the value of your var
functionTwo(); // output in console should be 1
只需查看您定义vars的范围即可。 js在这种情况下工作,您可以访问在定义函数之前定义的变量,并且在定义函数的同一范围级别上
编辑: 为了更好地理解
var dataStorage = null; // before you enter any { scope with socket
{
// ...
socket.on('login', function(data) {
dataStorage = data; // <<- write data to the global var dataStorage
console.log("User connected with id:" + data.uuid + " Bot names: " + data.names);
socket.room = data.uuid;
socket.join(data.uuid);
if (data.type == "server") {
io.sockets.in(socket.room).emit("force-login", "server-booted-up");
}
}.bind(this));
// ..
}
function FeederBot(bot_id, agent, bot_number, server) {
this.bot_id = bot_id; //ID of bot for logging
this.interval_id = 0; //here we will store setInterval's ID
this.ball_id = null;
this.server = ''; //server address will be stored here
this.client = new AgarioClient('Bot_' + this.bot_id); //creates new client
this.client.debug = 0;
this.client.agent = agent;
this.client.headers['user-agent'] = config.userAgent;
if (facebookManager.hasAvailableToken()) {
this.client.auth_token = facebookManager.getToken();
}
this.isOnFeedMission = false;
this.nickname = "Exper"
// and here you can access the global var again.
// make sure u test for not null and the property exists
if(!!dataStorage) {
if(dataStorage.hasOwnProperty('names')){
this.nickname = data.names;
}
}
this.lastsent = {minx: 0, miny: 0, maxx: 0, maxy: 0};
this.onboard_client(server, bot_number);
}