I am writing a collaborative music web-app that can be "played" in parallel across browsers in different devices. Imagine two people standing in the same room, and playing their "instruments" together. Each one holding a different device running a webapp in their hands.
I need both devices to have a synched timer where they agree on what time it is +/- several milliseconds.
My first attempt was simply to trust that my 2 devices (windows PC, and android phone) are synched. But they have several seconds between their clocks. So I realize that I need to implement this myself.
Is there a REST/Websocket service that I can use to periodically synchornize the apps' time? If not, is there a standard algorithm that would be effective to implement over websocket?
My naiive instinct is to implement a 4 way ping between the client and server, and half their ping/pong time, but I am pretty sure that someone has allready implemented something better.
As we are talking about music, standard multiplayer time-drifts won't cut it. I need the clocks to be in synch in greater accuracy than network ping time.
Is there something like NTP that works in a browser?