Ensure the most accurate synchronization

First I'll explain my problem : I've got a node.js server and a lot of JS client that receive events through socket.io. A web application send a end date (timestamp) to the node.js server and node.js broadcast this timestamp to all clients. Then clients launch a timer from now to the given date...

My problem : My customer wants a full synchronised application, so each client must be the same timer count at each moment... But each client don't has the same current date and so there is differents timer counts.

My first solution : My web-app send his current timestamp with each request and so, node.js broadcasts this timestamp. Then, each client compare his current timestamp with server's timestamp and applies the difference to his timer...

The result : It's better but not perfect. Some timer are not synchronous (due to the request delay in my opinion) and I see some milliseconds (less than one second) of difference.

So, have you a proposal to refine the timer ?

Thanks to every one.

Time synchronization over a packet-switched network is a difficult problem because of the unknowable transmission delays between nodes in the network. My suggestion is: don't try to solve this problem yourself. Just require that the server and all the clients are running NTP with a good configuration that enables them to sync time with good reliable sources. Let NTP worry about the problem.