Advanced

Sovereign Sync — Server & Client

Example showing the server-side `SyncStore` and registering the sync routes; client polls deltas.

server.js — Register sync routes

const express = require('express');
const http = require('http');
const { Server } = require('socket.io');
const SyncStore = require('../../packages/hub-server/sync/SyncStore');
const registerSyncRoutes = require('../../packages/hub-server/sync/syncRoutes');
const { createDeviceRegistry } = require('@epheme/core/deviceRegistry');

const app = express();
app.use(express.json());
const server = http.createServer(app);
const io = new Server(server);

const syncStore = new SyncStore();
const { verifyDeviceJWT } = createDeviceRegistry({
  deviceJwtSecret: process.env.DEVICE_JWT_SECRET || 'dev-secret',
});
registerSyncRoutes(app, io, syncStore, verifyDeviceJWT);

server.listen(3000);
// client polls deltas
const resp = await fetch('/api/sync/rooms/ROOM_ID/deltas?since=0');
const deltas = await resp.json();
console.log(deltas);