
Код AS3:
var stream:Object = new Object();
var LocalTime:Date = new Date();
stream.LOCALTIME = LocalTime.time.toString();
myStream.play(stream);
Задержки на сервере или на клиенте, связанные с выполнением фрагментов кода, исчисляются микросекундами. Поэтому ими пренебрегаем.
FP при отсчете timestamp чанков принимает за НОЛЬ момент вызова метода NetConnection.Connect.
Далее в каждом чанке timestamp равен разнице во времени между НОЛЕМ и моментом формирования чанка.
Network Latency измеряем в самом начале коннекта, когда в обе стороны идет обмен пакетами, превышающими TCP MSS.
Вызов myStream.play(stream) передает локальное время клиента. На сервере сравниваем chunk timestamp и значение LOCALTIME.VALUE, по которому можно вычислить момент начала сеанса.
Далее зная NetLatency вычисляем расхождение Tdelta между часами сервера и клиента.
Если прибавить Tdelta к timestamp чанка, получаем точное
время отправки чанка от клиента на сервер.
Дальше не имеет значения как будет меняться NetLatency, поскольку каждый прибывший на сервер пакет имеет timestamp - время отправки.
Таким образом мы будем знать время отправки каждого чанка по серверным часам. А если засечь время прибытия чанка, можно в каждый момент времени знать BDP
[IMG]http://img44.**************/img44/5671/timelineb.jpg[/IMG]