I'm sorry, this is poorly documented.
On Mon, 5 Mar 2012 19:46:27 -0800 (PST), UTAN wrote: > So the problem I had was that there wasn't a way to delay the script > until the user properties where set in serve side, since the mysql is > asynchronous the adduser even would fire without waiting on the result > from the query .. > > but using the tip [email protected] we found out there is a way to > delay the events in server side Ape.. this is really important if you > are to user the Http class or the mysql class in Ape.. > since both are going to be asynchronou.. > > Thanks a lot to Pablo because he was there when I most needed somebody > to extend me a hand.. > and also to [email protected] since he just broken the big mystery in > this important issue.. > > And I have to say it works!!!!!!!!!! > > revisited code. > > var userlist = new $H; > var sql = MySQLConnect('127.0.0.1', 'user', > 'password', 'Ape_users') > Ape.registerHookCmd("connect", function(params, cmd) { > if (!$defined(params) || !$defined(params.name)) return 0; > if (userlist.has(params.name.toLowerCase())) return ["007", > "NICK_USED"]; > //if (params.name.length > 16 || params.name.test('[^a-zA- > Z0-9]', > 'i')) return ["006", "BAD_NICK"]; > > cmd.user.setProperty('name', params.name); > cmd.user.setProperty('ip', cmd.ip); > setloggedinProperties(cmd.user); > return -1; > > }); > > Ape.addEvent('adduser', function(user) { > userlist.set(user.getProperty('name').toLowerCase(), true); > > }); > > Ape.addEvent('deluser', function(user) { > userlist.erase(user.getProperty('name').toLowerCase()); > }); > > function setloggedinProperties(user){ > > var usernick = user.getProperty('name').toLowerCase(); > sql.query('SELECT * FROM database WHERE BINARY > username="'+Ape.MySQL.escape(usernick)+'"',function(res,error){ > if(error){ > Ape.log('There was an error in the query > '+this.errorString()+''); > }else{ > var isauthorized; > if(res != ''){ > isauthorized = res[0].isauthorized; > } > if > (isauthorized)user.setProperty('isauthorized', isauthorized); > > Ape.addUser(user); > } > }); > > } > > function MySQLConnect(ip, user, password, database) { > var sql = new Ape.MySQL(ip + ":3306", user, > password,database); > > //onConnect callback > sql.onConnect = function() { > Ape.log('You are now connected to MySQL server'); > } > > //onError callback > sql.onError = function(errorNo) { > Ape.log('Connection error ' + errorNo +' '+ > this.errorString()); > } > > return sql; > } > > //Set up a poller to send keep alive request each 2 minutes > (function() { > sql.query('SELECT 1', function(res, errorNo) { > if (errorNo == 8) { //Something went wrong, connection has > been closed > Ape.log('Something went wrong, connection has been > closed'); > sql = MySQLConnect('127.0.0.1', 'user', > 'password','Ape_users'); //Reconnect to MySQL Server > } > }.bind(this)); > }).periodical(1000*60*2); -- You received this message because you are subscribed to the Google Groups "APE Project" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/ape-project?hl=en --- APE Project (Ajax Push Engine) Official website : http://www.ape-project.org/ Git Hub : http://github.com/APE-Project/
