Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Designing and implementing ur own Instant Messenger

Status
Not open for further replies.

ankursaxena

Programmer
Sep 7, 2001
133
US
Hi! Guys,
I just wanted to a get a little more practice in programming with java and also gain some experience with designing things..
I dont know i have alsways wanted to design my own IM system, so thats y here i am asking for some help..

what i want to do is..design an IM server and client from scratch.. i was wondering if people on this post can discuss and put out issues that curtail to designing one system.

Also may be put what technologies could be/should be used..u know like may be XML for process communication etc.

What i have thought so far is to have:
1. An Authrization server, which does exactly that
2. A Messaging Server, which takes care of messages going from one client to another
3. An Alive Server, which receives min to min updates on the status of clients, like if they r typing, if they r still online, or did they get disconnected, by means of alive messages.
4. A Client GUI
5. A client proxy for each of the servers, so the implementation of that is independent of the GUI
6. Database design which will hold typical info like login table, buddylist for each client, status table, history table, may be even current IP, port being used. etc

The processs would start when the client tries to log on, it sends a loginMsg, then server upin receipt would get the username, password, and check it, send an Ack/Nack back..
The client when receives an ack, would go ahead and ask for buddylist, the server would query the database, return the buddylist along with at that moment known status of each members
the client then would ask the server by sending it a message to briadcast to all its buddies that he/she is online...
the server, would check the buddylist and depending on how the person is on their list pass the message to them that this guy just came online.
then the client can then go ahead and start using the messaging server.
the messaging server can have a bunch of threads running under it, handing these incoming messages..
it would be udp senario, when one message is sent and the messaging server does load balancing by giving the message to be handled in a round robin basis.. to its child threads which are actually taking care of the message. the thread would query the db, check the recievers ip and port and send a msg to him and on receipt the client would send an ack saying it received the message for confirmation of message.
i can go on, but i dont know to, i know this is just very raw, i actiually want to do really developement on this, i may be totaly off, but if someone has crap to tell me, pzl do cuz until and unless i get negative response i cant learn..
it would be really gr8 if u do respond and help..plz thanx a ton.

ps:- later i want this to be able to get attached to msn,yahoo by only change to the server side which does the translation back and forth and the client doesnt need to be changed too much.

thanx alot

-Ankur
 
I don't want to rain on your parade, but that's a very ambitious development program to "just [...] get a little more practice in programming with java and also gain some experience with designing things.."

SourceForge would definitely be the place to pursue this of project, but I suggest you start something a lot smaller first.

On the other hand, if you choose to pursue this, please avoid the GUI traps the others fell into. Trillian (a multi-messenger), ICQ, Messenger, etc... all have horrible interfaces. If you decide to pursue this project, could you do actual usability testing before releasing?
 
Sure i understand what you guys are saying, it is an ambitious project alright, but i still want to pursue it. I have heard fo sourceforge, but never really knew how it works, i have just created an account, lets see, but what i am asking is, would anybody comment on the design, and is it worth it.

(daniel135) point taken about the interface, that why i wanted to seperate that with actual process, so that me or any one else could write on top of the proxys available to connect. i really want to go ahead with this. so hope someone else can do a little more commenting.

thanx a lot

-Ankur

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top