@redwoodjs/sdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
19 lines (18 loc) • 874 B
JavaScript
import { route } from "../../entries/router";
import { validateUpgradeRequest } from "./validateUpgradeRequest";
import { DEFAULT_REALTIME_KEY } from "./constants";
import { requestInfo } from "../../requestInfo/worker";
import { env } from "cloudflare:workers";
export { renderRealtimeClients } from "./renderRealtimeClients";
export const realtimeRoute = (getDurableObjectNamespace) => route("/__realtime", async function () {
const { request } = requestInfo;
const validation = validateUpgradeRequest(request);
if (!validation.valid) {
return validation.response;
}
const url = new URL(request.url);
const key = url.searchParams.get("key") || DEFAULT_REALTIME_KEY;
const id = getDurableObjectNamespace(env).idFromName(key);
const durableObject = getDurableObjectNamespace(env).get(id);
return durableObject.fetch(request);
});