This commit is contained in:
Jeff Emmett 2024-12-07 14:39:57 -05:00
parent 71fc07133a
commit 632e7979a2
2 changed files with 51 additions and 1 deletions

View File

@ -97,7 +97,21 @@ export class TldrawDurableObject {
// `fetch` is the entry point for all requests to the Durable Object
fetch(request: Request): Response | Promise<Response> {
try {
return this.router.fetch(request)
} catch (err) {
console.error('Error in DO fetch:', err);
return new Response(JSON.stringify({
error: 'Internal Server Error',
message: (err as Error).message
}), {
status: 500,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
});
}
}
// what happens when someone tries to connect to this room?

View File

@ -133,3 +133,39 @@ const router = AutoRouter<IRequest, [env: Environment, ctx: ExecutionContext]>({
// export our router for cloudflare
export default router
const corsHeaders = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
'Access-Control-Max-Age': '86400',
};
// Add CORS headers to all responses
function handleCors(request: Request) {
// Handle preflight requests
if (request.method === 'OPTIONS') {
return new Response(null, {
headers: corsHeaders
});
}
return null;
}
// Modify the fetch handler
async function handleRequest(request: Request) {
// Handle CORS preflight
const corsResult = handleCors(request);
if (corsResult) return corsResult;
// Handle the actual request
const response = await router.handle(request);
// Add CORS headers to the response
Object.entries(corsHeaders).forEach(([key, value]) => {
response.headers.set(key, value);
});
return response;
}