I didn't use the session restore thing, but it looks ok.

I may suggests that you use the "user.setProperty" server side command to 
assign info to a user, even the username. See 
http://www.ape-project.org/docs/server/users/user.setproperty.html for details. 
When you specify the username in the "core.start", you're limited regarding 
certain character or the length of the username.


Here's a example of my code if you need it:


> chat = new APE.Chat();
> 
> //Load APE
> chat.load({
>       identifier: 'SC_Chat',
>       channel: 'listeSalon'
> });
> 
> //Once Ape is ready, connect to server
> chat.addEvent('load', function(core){
>       chat.core.start({
>               'name': $time().toString(),
>       });     
> });
> 
> chat.addEvent('multiPipeCreate', function(pipe, options){
>       
>       //If we just joined the "lobby" channel...      
>       if (pipe.name == "listesalon") {
>               
>               //Get the info from PHP. PHP will send them to the server with 
> InlinePush
>               $.ajax({
>                       type: "POST",
>                       url: baseUrl+'chat',
>                       dataType: "html",
>                       data: 
> "action=serverAuth&firstinit=1&upid="+this.core.user.pubid,
>                       success: function(data) {
>                               //Ready to chat
>                               // [...]
>                       }
>               });
>       }
> });

The AJAX request send info to Ape with InlinePush kind of request. Those 
informations (Username, pics, etc) are store in the user public property like 
described earlier. With this, I don't need to ask for the username and pic when 
he send a message in the chat.

When a user post something on the chat, it's actually send with php inlinepush 
since I don't have MySQL support on the server itself (and I need to parse 
BBcode with php). Here is the code from PHP and the Ape Server-side command

> //On prépare la transmission à APE
>               $cmd = array(array( 
>                       'cmd' => 'chatsendmsg', 
>                       'params' =>  array( 
>                               'password'  => $chat->APE_PASSWORD, 
>                               'raw'       => 'chatSendMsg', 
>                               'channel'   => $_POST['pipename'],  //The 
> current channel name
>                               'data'          => array(
>                                       'chatmsg'               => $msg,
>                                       'userid'                        => 
> $user->data['user_id'],
>                                       'pubid'                 => 
> $_POST['upid'],
>                               ),
>                  ) 
>               ));
>                       
>               
>               //On transmet à APE
>               $data = file_get_contents($chat->APE_SERVER . 
> urlencode(json_encode($cmd)));



> Ape.registerCmd("chatsendmsg", false, function(params, infos) {
>       if (params.password == Ape.config("inlinepush.conf", "password")) {
>               
>               if ($defined(params.channel) && $defined(params.data) && 
> $defined(params.raw)) {
>                       var chan = Ape.getChannelByName(params.channel);
>                       if (!$defined(chan)) return ["401", "UNKNOWN_CHANNEL"];
>                                               
>                       //Get Ape user Info from PubID
>                       var thisUser = Ape.getUserByPubid(params.data.pubid);
>                                                       
>                       //validate the phpBB ID match for security
>                       if (params.data.userid != 
> thisUser.getProperty('userid')) {
>                               return ["092", "BAD_PHP_USERID"];       
>                       } 
>                                       
>                       //Send data to the channel
>                       chan.pipe.sendRaw("chatSendMsg", {
>                               "chatmsg": params.data.chatmsg,
>                               "username": thisUser.getProperty('username'),
>                               "avatar": thisUser.getProperty('avatar'),
>                               "userid": thisUser.getProperty('userid'),
>                               "pipename": chan.getProperty('name'),
>                       });
>                                                                       
>                       //Tout est ok
>                       return {"name":"pushed","data":{"value":"ok"}};
>               } else {
>                       return 0;
>               }
>       } else {
>               return ["400", "BAD_PASSWORD"];
>       }
> 
> });

As you can see, you need to know the user Public ID. To send to only one 
person, it's the same thing, but you need to know both user pubid or you can 
create a temporary channel that both user need to join. For the first method, 
you change "chan.pipe.sendRaw" with:

> var toUser = Ape.getUserByPubid(params.data.to_user_pubid);

> toUser.pipe.sendRaw("chatSendMsg", { ... });





I don't know if any of this will help get you started, but let me know.

It can quite complex depending on how you want to do thing. I added a lot of 
thing in my application because I wanted a complete solution with online status 
(Away, busy, online), personal message, etc. If you want to add little extra 
stuff in you app, even history, you'll need to get your hand dirty and use AJAX 
/ PHP InlinePush and/or ServerSide command. But in the hand it's worth it when 
you see a lot of people using your chat and giving you great feedback on the 
work you've done.


   - Louis




Le 2011-11-26 à 10:44, Rossco a écrit :

> Ok I have edited my script which seems to load up a user id and
> name...  The [[+smf.username]] is just a placeholder that will pass
> the username.  Now I guess I need to figure out how to send messages
> to the mainLobby channel then take it further to one to one messages.
> Does this appear to be correct so far?
> 
> 
>        APE.Config.scripts = [APE.Config.baseUrl + '/Build/
> uncompressed/apeCoreSession.js'];
>        var client = new APE.Client();
> 
>        client.load({'identifier': 'shoutit', 'channel':'mainLobby',
> 'userid':'1'});
>        client.addEvent('load', function() {
>         //core.options.restore is true if a session is active
>                if (client.core.options.restore) {
>                    client.core.start();
>                } else {
>                    client.core.start({'name':'[[+smf.username]]',
> 'userid':'[[+smf.id]]'});
>                }
>        });
> 
>        client.addEvent('ready', function() {
>            if (client.core.options.restore) {
>                client.core.getSession('name', function(name) {
>                    console.log('Receiving sessions data. username
> value is : ', name.data.sessions.name);
>                });
>                client.core.getSession('id', function(id) {
>                    console.log('Receiving sessions data. id value
> is : ', id.data.sessions.id);
>                });
>            } else {
> 
>                console.log('saving custom session data, username on
> the server');
>                client.core.setSession({'name':'[[+smf.username]]',
> 'id':'[[+smf.id]]'});
>            }
>        });
> 
>        client.addEvent('multiPipeCreate', function(pipe) {
>                console.log('New pipe ' + pipe.name);
>        });
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "APE Project" group.
> To post to this group, send email to ape-project@googlegroups.com
> To unsubscribe from this group, send email to
> ape-project+unsubscr...@googlegroups.com
> 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 ape-project@googlegroups.com
To unsubscribe from this group, send email to
ape-project+unsubscr...@googlegroups.com
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