PubNub provides a time API which can be used to synchronize clients (each having its own latency) within a millisecond of each other. This can be done by creating a minimum buffer amount of time (wait time) for which all devices agree to move forward after acknowledging the signal.
Follow these basic steps to sync devices with independent latencies:
- determine the local time (in milliseconds):
start = now() - load the server timetoken:
timetoken = http://pubsub.pubnub.com/time/0 - calculate the delay latency for a timetoken request:
delay = now() - start - convert server timetoken into miliseconds:
timetoken = timetoken/10000 - add a delay to compensate for latency:
client_time = timetoken + delay
Use client_time to synchronize all devices to fire at a particular clock time.
NOTE: this is just a basic mechanism to lockstep-synchronize devices with independent latency connections. A full solution will need to customize the above mechanism to match your needs. The clock will need to be re-synchronized each time the app boots.