dd/src/routes/api/counter/+server.ts

24 lines
747 B
TypeScript

import type { RequestHandler } from './$types';
export const GET: RequestHandler = async ({ request, platform }) => {
// WebSocket 업그레이드 요청인지 확인
const upgradeHeader = request.headers.get('Upgrade');
if (!upgradeHeader || upgradeHeader !== 'websocket') {
return new Response('Expected Upgrade: websocket', { status: 426 });
}
// Durable Object ID 생성 (모든 클라이언트가 같은 인스턴스에 연결)
const id = platform?.env.COUNTER.idFromName('global-counter');
if (!id) {
return new Response('Durable Object not configured', { status: 500 });
}
// Durable Object stub 가져오기
const stub = platform.env.COUNTER.get(id);
// Durable Object에 요청 전달
return stub.fetch(request);
};