Request timeouts on Bravo
When performing an API request from a mobile app built with Bravo, both from Bravo Vision and a published app, an HTTP request message is sent to the Bravo servers. Then, another request is sent to the corresponding remote API, which is responsible for building the HTTP response. The communication schema for the API request is shown below.
Due to connection problems, misconfigurations or other errors, it might happen that either the Bravo servers or the remote API servers are unable to receive and process the HTTP request, and are therefore unable to complete the communication. In case this happens, timeout and connection retry strategies are applied.
Sometimes, the client-side requests (sent from the mobile app) can't reach the Bravo servers. Normally, this happens when there are network errors, for instance, due to poor Internet connection from the mobile device.
In these cases, the client (mobile app) will retry the request up to 3 times per 1 second. Sometimes, the network issues are temporary - for instance, the phone user passing by an area with bad coverage.
In case the Bravo servers don't give any response within 60 seconds (this timeout is enforced both on Android and iOS), a timeout error will be raised, and the end users will see a network error screen on the app.
Requests are processed using a throttling algorithm. This means some rate limits are applied to enforce the quality of service.
When the remote API server is unreachable from Bravo servers, no retry strategies are applied. Besides, the following timeout limits are applied:
- 3s of connection timeout / 5s total duration limit for GET requests
- 8s of connection timeout / 10s total duration limit for non-GET requests.
Once these timeouts are reached, a timeout error is returned.