Challenge starts can easily timeout in high latency networks if the challenge start timeout is set to 30 seconds or less. Then again setting it more than 30 seconds would be leave users waiting for too long and getting easily bored at waiting.
public ItemList gameStart(java.lang.String lobbyID,
So how to do this in your game design the right way is to avoid calling gameStart until the challenge has been accepted by the challenged player, and that acceptance has been received by the challenger. The steps would be:
1. Challenger sends chat message with challenge to opponent
2. Opponent sends chat message accepting challenge
3. When challenger receives challenge accept message, program: a) sends acknowledgement of receipt of challenge accept; b) calls gameStart
4. When opponent receives acknowledgement of challenge accept from step 3. a), opponent calls gameStart
In this way, gameStart timeout issues are reduced or eliminated because the method is not called until and unless the challenged player has responsed.