fix vite config
This commit is contained in:
parent
110fc19b94
commit
2e0a05ab32
|
|
@ -34,5 +34,8 @@ export default defineConfig({
|
||||||
alias: {
|
alias: {
|
||||||
'@': '/src',
|
'@': '/src',
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
define: {
|
||||||
|
'import.meta.env.VITE_WORKER_URL': JSON.stringify(process.env.VITE_WORKER_URL)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -129,29 +129,52 @@ export class TldrawDurableObject {
|
||||||
|
|
||||||
// what happens when someone tries to connect to this room?
|
// what happens when someone tries to connect to this room?
|
||||||
async handleConnect(request: IRequest): Promise<Response> {
|
async handleConnect(request: IRequest): Promise<Response> {
|
||||||
const sessionId = request.query.sessionId as string
|
if (!this.roomId) {
|
||||||
if (!sessionId) return error(400, 'Missing sessionId')
|
return new Response('Room not initialized', { status: 400 });
|
||||||
|
}
|
||||||
|
|
||||||
const { 0: clientWebSocket, 1: serverWebSocket } = new WebSocketPair()
|
const sessionId = request.query.sessionId as string;
|
||||||
serverWebSocket.accept()
|
if (!sessionId) {
|
||||||
|
return new Response('Missing sessionId', { status: 400 });
|
||||||
|
}
|
||||||
|
|
||||||
const room = await this.getRoom()
|
const { 0: clientWebSocket, 1: serverWebSocket } = new WebSocketPair();
|
||||||
room.handleSocketConnect({ sessionId, socket: serverWebSocket })
|
|
||||||
|
|
||||||
const origin = request.headers.get('Origin') || '*'
|
try {
|
||||||
|
serverWebSocket.accept();
|
||||||
|
const room = await this.getRoom();
|
||||||
|
|
||||||
return new Response(null, {
|
// Handle socket connection with proper error boundaries
|
||||||
status: 101,
|
room.handleSocketConnect({
|
||||||
webSocket: clientWebSocket,
|
sessionId,
|
||||||
headers: {
|
socket: {
|
||||||
'Access-Control-Allow-Origin': origin,
|
send: serverWebSocket.send.bind(serverWebSocket),
|
||||||
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, UPGRADE',
|
close: serverWebSocket.close.bind(serverWebSocket),
|
||||||
'Access-Control-Allow-Headers': '*',
|
addEventListener: serverWebSocket.addEventListener.bind(serverWebSocket),
|
||||||
'Access-Control-Allow-Credentials': 'true',
|
removeEventListener: serverWebSocket.removeEventListener.bind(serverWebSocket),
|
||||||
'Upgrade': 'websocket',
|
readyState: serverWebSocket.readyState,
|
||||||
'Connection': 'Upgrade'
|
}
|
||||||
}
|
});
|
||||||
})
|
|
||||||
|
return new Response(null, {
|
||||||
|
status: 101,
|
||||||
|
webSocket: clientWebSocket,
|
||||||
|
headers: {
|
||||||
|
'Access-Control-Allow-Origin': request.headers.get('Origin') || '*',
|
||||||
|
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, UPGRADE',
|
||||||
|
'Access-Control-Allow-Headers': '*',
|
||||||
|
'Access-Control-Allow-Credentials': 'true',
|
||||||
|
'Upgrade': 'websocket',
|
||||||
|
'Connection': 'Upgrade'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error('WebSocket connection error:', error);
|
||||||
|
serverWebSocket.close(1011, 'Failed to initialize connection');
|
||||||
|
return new Response('Failed to establish WebSocket connection', {
|
||||||
|
status: 500
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getRoom() {
|
getRoom() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue