The problem is mobile, and specifically the need for push notifications to have reasonable battery life. The traditional model that desktop IM clients use, where they have a permanent connection to the server, is not viable on mobile. But push notifications require you to design your protocol around them and lock you into the corresponding provider (i.e. Google or Apple, depending on the platform).