Realtime Infrastructure
Realtime adapters — pgNotify, Redis Streams, and Cloudflare Durable Objects.
QUESTPIE supports real-time data updates via POST /realtime multiplexed endpoint.
Adapters
pgNotifyAdapter
Uses PostgreSQL LISTEN/NOTIFY. Works for single-instance deployments:
import { runtimeConfig } from "questpie/app";
import { pgNotifyAdapter } from "questpie/adapters/pg-notify";
export default runtimeConfig({
realtime: {
adapter: pgNotifyAdapter({
connectionString: process.env.DATABASE_URL,
}),
},
});redisStreamsAdapter
Uses Redis Streams. Required for multi-instance deployments:
import { runtimeConfig } from "questpie/app";
import { redisStreamsAdapter } from "questpie/adapters/redis-streams";
export default runtimeConfig({
realtime: {
adapter: redisStreamsAdapter({
url: process.env.REDIS_URL,
}),
},
});cloudflareRealtimeAdapter
Cloudflare Workers require an explicit Durable Object-backed realtime adapter. The Cloudflare Worker entrypoint validates that this adapter is present.
import { runtimeConfig } from "questpie/app";
import {
cloudflareRealtimeAdapter,
type CloudflareDurableObjectNamespace,
} from "questpie/adapters/cloudflare";
async function getRealtimeNamespace(): Promise<CloudflareDurableObjectNamespace> {
const { env } = await import("cloudflare:workers");
return env.QUESTPIE_REALTIME as CloudflareDurableObjectNamespace;
}
export default runtimeConfig({
realtime: {
adapter: cloudflareRealtimeAdapter({
namespace: getRealtimeNamespace,
}),
},
});Export the Durable Object handler from your Worker:
import { app } from "#questpie";
import {
createCloudflareRealtimeDurableObjectHandler,
createCloudflareWorkerHandlers,
} from "questpie/adapters/cloudflare";
export default createCloudflareWorkerHandlers(app, { basePath: "/api" });
const realtimeDurableObject = createCloudflareRealtimeDurableObjectHandler(
app,
{
basePath: "/api",
},
);
export class QuestpieRealtimeDurableObject {
fetch(request: Request) {
return realtimeDurableObject(request);
}
}When to Use Which
| Adapter | Use case |
|---|---|
pgNotifyAdapter | Single server, development, simple deployments |
redisStreamsAdapter | Multiple servers, horizontal scaling |
cloudflareRealtimeAdapter | Cloudflare Workers + Durable Objects |
Related Pages
- Realtime (Frontend) — Client subscriptions