API reference › @evolu/nodejs › startRelay
function startRelay(
__namedParameters: NodeJsRelayConfig,
): Task<Relay, never, RelayDeps>;
Defined in: nodejs/src/local-first/Relay.ts:91
Starts an Evolu relay server using Node.js.
Use createRelayDeps to create dependencies for better-sqlite3, or provide a custom SQLite driver implementation.
Example
// Ensure the database is created in a predictable location for Docker.
mkdirSync("data", { recursive: true });
process.chdir("data");
const console = createConsole({
// level: "debug",
formatter: createConsoleFormatter()({
timestampFormat: "relative",
}),
});
const deps = { ...createRelayDeps(), console };
await using run = createRun(deps);
await using stack = new AsyncDisposableStack();
stack.use(
await run.orThrow(
startRelay({
port: 4000,
// Note: Relay requires URL in format ws://host:port/<ownerId>
// isOwnerAllowed: (_ownerId) => true,
isOwnerWithinQuota: (_ownerId, requiredBytes) => {
const maxBytes = 1024 * 1024; // 1MB
return requiredBytes <= maxBytes;
},
}),
),
);
await run.deps.shutdown;