Sure no problem,

Unfortunately the whole process is victim of the same rule. And that is
that JavasScript will not wait for an asynchronous request to finish and
continue execution.
So the 'connect' hook will finish and return 1 weather the user properties
are set or not.

While working with JS in the client side i use the method of re-running a
function when im in similar situation:

//Global variable
var cache;

function buildUserCard(user_id){
if(!cache){
//Get the template from the server
$.get("request/UserCard.tpl", function(data){
//export the value of 'data' to the global 'cache'
cache = data;
//Re-Run the same function to continue building our UserCard
buildUserCard(user_id);
});
//kill function exceution
return false;
}
 //We got the template in 'cache' so continue builing our UserCard
var UserCard = ...
...
}

But in server side like APE is different because im not sure if we could
trigger commands. I have two alternatives in mind you could try:

1) return 0 instead of 1 in the 'connect' hook to kill it, and try to send
a custom response from the sql.query() callback using
sendResponse()<http://www.ape-project.org/docs/server/raws/sendresponse.html>
 or sendRaw()<http://www.ape-project.org/docs/server/more/pipe.sendraw.html>
not
sure which one is more appropriate.

2) keep returning 1 in the 'connect' hook, in the sql.query() callback send
a custom RAW to the channels the user is part-of using
sendRaw()<http://www.ape-project.org/docs/server/more/pipe.sendraw.html>.
This would required extra code in the client side to handle the custom RAW
and update the user object accordingly.

Happy coding :)

If you are having more headaches then solutions consider using inlinepush
instead, you could also avoid having to deal with the clumsy MySql in APE
server, this thread has some good information about it
https://groups.google.com/forum/?fromgroups#!searchin/ape-project/inlinepush$20ptejada26/ape-project/5pJwbIdbNGY/hOGJ5FRdpYwJ


On Mon, Mar 5, 2012 at 8:30 PM, UTAN <[email protected]> wrote:

>
> On this try I was trying to return, but is not how I had before it
> very similar to the one you posted in your last post..
>
>
> On Mar 5, 5:15 pm, Pablo Tejada <[email protected]> wrote:
> > Just for the record is not the APE server's fault, is the way JS works
> and
> > the way you have structured your application. For example this function:
> >
> > function setloggedinProperties(user){
> >    var usernick = user.getProperty('name').toLowerCase();
> >
> >    sql.query('SELECT * FROM pfc_login WHERE BINARY
> > username="'+Ape.MySQL.escape(usernick)+'"',function(res,error){
> >    if(error){
> > Ape.log('There was an error in the query'+this.errorString()+'');
> >    }else{
> >    if(res != ''){
> > return res[0].isauthorized;
> >    }
> >    }
> >    });
> >
> > }
> >
>
> --
> 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/
>

-- 
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/

Reply via email to