Sync
Finally, let’s start syncing our changes to the server!
Replicache can sync with any server that implements the Replicache sync protocol. You can learn how to build such a server in the BYOB Tutorial. For now, we’ll just connect to an existing server by adding pushURL
and pullURL
parameters to the constructor.
Copy the preview URL (i.e. xxxxx.csb.app/space/123) into a different tab or browser, and click increment to see the two tabs sync.
What's that initSpace()
call?
For each run of this demo, we create a new space on the server to store data in. This ensures each visitor to this demo sees only their own counts and isn't confused by seeing other users incrementing the count at the same time.
To support realtime updates, most Replicache server support an optional poke channel. Replicache pokes are zero-length messages that serve as a hint from server to clients that a space has changed and that the clients should pull again soon. This sample server implements a poke channel using Server-Sent Events. For a deeper understanding of how poke works please refer to our poke documentation.
Challenge
Replicache mutators are not required to compute the same result on the client as the server.
This is a feature! The server can have different or better information than the client. Also, this prevents clients from lying or cheating.
Try modifying your increment mutator to compute an incorrect result. You will see the incorrect result momentarily on the client or for as long as you are offline. But after sync, the clients snaps into alignment with the correct answer from the server automatically.