You make a move, the move gets sent to our server, & then your opponent's computer. We adjust the clocks dynamically so that neither player is "charged" for communication time - but rather, only for the time actually spent thinking.
A very extreme example:
Imagine it takes 5 seconds for the move to hit our server, then another 5 seconds for the move to hit your opponent's computer from there. Your opponent will not see this move until 10 seconds after you make it, but your opponents clock will usually start counting down on your screen when the move hits our server. Then, let's say your opponent thinks for a total of 10 seconds. After this, it takes another 5 seconds for the move to be transmitted to our servers, and another 5 seconds for the move to now go to your computer.
So, you have been waiting for this move for roughly 30 seconds (10 seconds total travel time, 10 seconds thinking time, and another 10 seconds total travel time), and your opponents clock has been counting down for roughly 25 seconds. But since your opponent only spent 10 seconds thinking, that's all the time they get charged for. So, when their move finally hits your computer, their clock display re adjusts for the 15 extra seconds that your opponent wasn't actually thinking. Meanwhile, your clock display on your end will only count down while you are thinking. There is no need for correction on your end (and remember, your clock is adjusting similarly on your opponent's screen).
Fortunately, in reality, travel times are usually less than what is described above. (In fact, we only allow members to play if their detected lag is two seconds or less.) However, the travel times are not consistent, so adjustments must be made dynamically. There is no way around it: all real-time chess servers have to deal with lag, though other sites are a bit less transparent about it.
Keywords: clocks, skip, clock, jumping, time, cheat, delay, bonus