// This gets called in my fetch handler
/*
if (request.url.includes('/websocket')) {
return handleWebsocketRequest(request, env, appUrl, user);
}
*/
export const handleWebsocketRequest = async (
request: Request,
env: Env,
appUrl: string,
user: User | null,
): Promise<Response> => {
if (request.url.includes('/websocket') && user) {
let id = env.WEBSOCKET_HIBERNATION_SERVER.idFromName(`user-${user?.id}`);
let stub = env.WEBSOCKET_HIBERNATION_SERVER.get(id);
// Let the Durable Object handle the WebSocket creation and upgrade
const response = await stub.fetch(request.url, {
method: request.method,
headers: request.headers,
body: request.body,
});
return response as Response;
}
return new Response(
JSON.stringify({
error: {
code: 'Unauthorized',
message: 'You must be logged in to use this endpoint',
},
}),
{
status: 401,
headers: {
'content-type': 'application/json',
'Access-Control-Allow-Origin': appUrl,
'Access-Control-Allow-Credentials': 'true',
},
},
);
};
// This gets called in my fetch handler
/*
if (request.url.includes('/websocket')) {
return handleWebsocketRequest(request, env, appUrl, user);
}
*/
export const handleWebsocketRequest = async (
request: Request,
env: Env,
appUrl: string,
user: User | null,
): Promise<Response> => {
if (request.url.includes('/websocket') && user) {
let id = env.WEBSOCKET_HIBERNATION_SERVER.idFromName(`user-${user?.id}`);
let stub = env.WEBSOCKET_HIBERNATION_SERVER.get(id);
// Let the Durable Object handle the WebSocket creation and upgrade
const response = await stub.fetch(request.url, {
method: request.method,
headers: request.headers,
body: request.body,
});
return response as Response;
}
return new Response(
JSON.stringify({
error: {
code: 'Unauthorized',
message: 'You must be logged in to use this endpoint',
},
}),
{
status: 401,
headers: {
'content-type': 'application/json',
'Access-Control-Allow-Origin': appUrl,
'Access-Control-Allow-Credentials': 'true',
},
},
);
};