Well, I know there are so many IM services. and that I want to build an IM system is just for practicing my programming skill.
Here there are several questions that come up to my head when starting to design it. As far as I know, we can only receive a response from the server by sending a request to it, but, for an Instant Message System, this is not realistic, by doing that, the Instant Message System is not instant. Let's assume that there is a server and several clients sending messages to it and receiving messages from it, how can I achieve that a client is able to receive a message from the server without sending a request on it's own initiative? this seems not realistic either.