public class TimesyncExtension extends Object implements BayeuxServer.Extension
{ext:{timesync:{tc:12345567890,l:23,o:4567},...},...} where:
A cometd server that supports timesync, can respond with an ext field like:
{ext:{timesync:{tc:12345567890,ts:1234567900,p:123,a:3},...},...}
where:
The relationship between tc, ts, o & l on the server is given by
ts=tc+o+l (the time the server received the message is the
client time plus the offset plus the network lag). Thus the accuracy of the o
and l settings can be determined with a=tc+o+l-ts.
When the client has received the response, it can make a more accurate
estimate of the lag as l2=(now-tc-p)/2 (assuming symmetric lag).
A new offset can then be calculated with the relationship on the client that
ts=tc+o2+l2, thus o2=ts-tc-l2.
Since the client also receives the a value calculated on the server, it should be possible to analyse this and compensate for some asymmetry in the lag. But the current client does not do this.
| Modifier and Type | Field and Description |
|---|---|
static String |
LAG_ATTRIBUTE |
| Constructor and Description |
|---|
TimesyncExtension() |
| Modifier and Type | Method and Description |
|---|---|
int |
getAccuracyTarget()
timesync responses are not set if the measured accuracy is less than the
accuracyTarget.
|
boolean |
rcv(ServerSession from,
ServerMessage.Mutable message) |
boolean |
rcvMeta(ServerSession from,
ServerMessage.Mutable message) |
boolean |
send(ServerSession from,
ServerSession to,
ServerMessage.Mutable message) |
boolean |
sendMeta(ServerSession session,
ServerMessage.Mutable message) |
void |
setAccuracyTarget(int target)
timesync responses are not set if the measured accuracy is less than the
accuracyTarget.
|
public static final String LAG_ATTRIBUTE
public int getAccuracyTarget()
public void setAccuracyTarget(int target)
target - accuracy target in mspublic boolean rcv(ServerSession from, ServerMessage.Mutable message)
rcv in interface BayeuxServer.Extensionpublic boolean rcvMeta(ServerSession from, ServerMessage.Mutable message)
rcvMeta in interface BayeuxServer.Extensionpublic boolean send(ServerSession from, ServerSession to, ServerMessage.Mutable message)
send in interface BayeuxServer.Extensionpublic boolean sendMeta(ServerSession session, ServerMessage.Mutable message)
sendMeta in interface BayeuxServer.ExtensionCopyright © 2008-2012 Dojo Foundation. All Rights Reserved.