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;