rwsdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
17 lines (16 loc) • 792 B
JavaScript
import { env } from "cloudflare:workers";
import { route } from "../../entries/router";
import { DEFAULT_REALTIME_KEY } from "./constants";
import { validateUpgradeRequest } from "./validateUpgradeRequest";
export { renderRealtimeClients } from "./renderRealtimeClients";
export const realtimeRoute = (getDurableObjectNamespace) => route("/__realtime", async function ({ request }) {
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);
});