Jump to content

  • Log In with Google      Sign In   
  • Create Account


Sending messages


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 programmer12   Members   -  Reputation: 104

Like
0Likes
Like

Posted 22 January 2013 - 09:45 AM

Hi there,

I have wrriten a instant messaging server like MSN or ICQ and I've gotten a problem.
In theory, when client asked for sending message to a friend through that server where should I get the friend's socket?
How can I validate that socket?How can I know for sure is the specified friend socket?
What happend when the friend logged out? I should support that but I can not send messages through a broken socket(I will probably get a socket timeout error).


I think I know how to handle with online friends but on the other side, offline friends are problematic.

 



Sponsor:

#2 Kylotan   Moderators   -  Reputation: 3333

Like
1Likes
Like

Posted 22 January 2013 - 11:03 AM

You will already have the friend's socket because they are connected to you, and you can send the information down that socket. Or, you can send information down that socket to tell the friend's client to open a new connection.

This only works when the friend is online. If the friend is offline you can't send anything. You could choose to store the message on the server in a queue until they log on.

You know that a given socket belongs to the right person because they probably had to authenticate (eg. username/password) in order to connect it to your server.

When the friend logs out, you can tell the other person that they can't send messages any more. If they try, send a reply saying that it failed.

Edited by Kylotan, 22 January 2013 - 11:03 AM.


#3 hplus0603   Moderators   -  Reputation: 5108

Like
1Likes
Like

Posted 22 January 2013 - 03:18 PM

Most chat systems do not do direct friend-to-friend connections, but instead route the messages through a central server farm.
That way, each participant only needs to know how to connect to the server, and the rather challenging part of P2P finding and matchmaking isn't needed.
enum Bool { True, False, FileNotFound };

#4 Bacterius   Crossbones+   -  Reputation: 8324

Like
1Likes
Like

Posted 25 January 2013 - 03:13 AM

Most chat systems do not do direct friend-to-friend connections, but instead route the messages through a central server farm.
That way, each participant only needs to know how to connect to the server, and the rather challenging part of P2P finding and matchmaking isn't needed.

 

Though another alternative is to use a central server to locate peers and initiate connection, and then let those peers connect to each other without the server's help. This is what Skype does, I believe - the server handles the contact list and provides your contact's IP on request, and when you want to message them or send a file, you connect to them directly (this is also why you can't send delayed messages - if you send a message when your contact is offline, it will be stored on your computer and sent when both of you are online again). Then, you get the best of both worlds - no need for complex matchmaking, and less security concerns about servers storing conversations (and other stuff). Well, actually, Skype apparently only does this for voice conversations (to avoid heavy bandwidth load on servers) but it could be done for text as well.


Edited by Bacterius, 25 January 2013 - 03:38 AM.

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis


#5 hplus0603   Moderators   -  Reputation: 5108

Like
0Likes
Like

Posted 25 January 2013 - 12:10 PM

This is what Skype does

From what I've heard, I think they used to do this, but moved away from it. That's second hand information, though.

Just getting a plain TCP connection to your server to work is unlikely to go above 95% availability unless you put a lot of effort into it. Places like Bahrain, Saudi Arabia, Iran, China, etc, all add a lot of challenges.

That "central directory" approach is what I meant by "P2P finding and matchmaking" and is a pretty annoying problem if you want to get more than, say, 90% success for the peer/peerl introduction. Getting to 100% of the world-outside-China with this approach is very, very hard. Getting 100%-including-China is even worse :-(
enum Bool { True, False, FileNotFound };




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS