FlashComGuru Home Imediasee Influxis Uvault Akamai
                                                                                       Forum Index | Active Topics | Register
                                                                                                          List Overview | List Archives
                                                                                                                           About this site | Advertise
 

home

Adobe AIR (8)
Applications (32)
Books & Training (9)
Collaboration (9)
Components (6)
Events (50)
Flash Player (10)
Flex (29)
FMS (70)
General (109)
Hosting (5)
Jobs (13)
Off topic (31)
Press Releases (9)
Site Check (8)
Tools (41)
Videos & Players (54)

Flash On the Beach

Alltop, all the cool kids (and me)


Private Messages with FlashCom
by Fernando Flórez of OneLX

A lot of people are asking for a simple way to send private messages using flashcom. I first thought on doing it clientside but Peldi told me that doing it serverside is a much better possibility, he also gave me a great idea (you can read the post here).

I have found this way of doing it and is really simple, it also gives you some nice possibilities (checking if a username is taken) and now you can say goodbye to for loops with this example.

One thing to note is that this is a pretty advanced piece of code. You will need a good understanding of FlashCom Server and you cannot simply use this with pre-made components (we will try and cover that part in another tutorial).

You need an object that will include the usernames and that slots will have a reference to each client.

application.onAppStart = function(){
   // create the list object
   this.list = {};
}

application.onConnect = function(newClient, username){
   // include the username on the list
   this.list[username] = newClient;
   // this is just to keep a reference of the username
   newClient.username = username;
   this.acceptConnection(newClient);
}

application.onDisconnect = function(oldUser){
   // delete the username from the list
   this.list[oldUser.username] = null;
   delete this.list[oldUser.username];
}

Now, you can use this to build a method that will send a call to a specific client. For example:

newClient.privateMsg = function(user, msg){
   application.list[user].call("privateMsg", null, msg);
}


This will invoke a function 'privateMsg' on the specified client. I will leave that part up to you to finalise. Make sure you check the serverside and clientside actionscript dictionaries for details.

You can check if a username is already taken with something like this for example:

application.onConnect = function(newClient, username){
   if(this.list[username] == null){
      // the username isn't currently in use
      this.acceptConnection(newClient);
      // more code here
   }else{
      // username is already taken
      this.rejectConnection(newClient, {msg: "username is taken"});
   }
}


And thats all. Hope this helps someone!

Got a question about this tutorial? You can find the thread for it in our forum.

Fernando Flórez 05/2003