We are developing an application that involves heavy networking. The way the application is set up now is: At startup, the application is connecting to a server (we created the server, so it can be heavily customized). While it is doing that, it displays a Logo. So, in order for the application to enter the main screen, it must download all data needed from the server. So it makes 2 requests. Note that information exchange between the server and the client is achieved using an XMPP stream (underlying BSD sockets). And there lies the problem. Sometimes, that request is taking TOO long. Although the client sends the necessary request data, the server is "stuck". When that happens, it's as if the application cannot enter into the main screen. The question is: What do we do in this occasion, apart from optimizing our server? I'm looking for some general guidance.