Refactor server and API handler for improved error handling and routing logic. Updated request handling to use Incoming type and added HTTP/1.1 restriction. Enhanced splash screen logic in the frontend to manage routing based on onboarding and setup states. Fixed WebSocket client initialization to ensure lazy loading and error handling. Cleaned up unused imports and variables across multiple files.

This commit is contained in:
zazawowow
2026-01-24 23:09:46 +00:00
parent 731cd67cfb
commit c293bd9880
37 changed files with 426 additions and 30 deletions

View File

@@ -232,15 +232,19 @@ let wsClientInstance: WebSocketClient | null = null
function getWebSocketClient(): WebSocketClient {
if (typeof window === 'undefined') {
// SSR - create new instance
return new WebSocketClient()
if (!wsClientInstance) {
wsClientInstance = new WebSocketClient()
}
return wsClientInstance
}
// Check if we have a persisted instance from HMR
if ((window as any).__archipelago_ws_client && (window as any).__archipelago_ws_client.ws) {
const existing = (window as any).__archipelago_ws_client
const existing = (window as any).__archipelago_ws_client
if (existing && existing instanceof WebSocketClient) {
// Check if the WebSocket is still valid
if (existing.ws && existing.ws.readyState === WebSocket.OPEN) {
console.log('[WebSocket] Using existing connected client from HMR')
wsClientInstance = existing
return existing
}
}
@@ -248,14 +252,32 @@ function getWebSocketClient(): WebSocketClient {
// Create new instance
if (!wsClientInstance) {
wsClientInstance = new WebSocketClient()
(window as any).__archipelago_ws_client = wsClientInstance
if (typeof window !== 'undefined') {
(window as any).__archipelago_ws_client = wsClientInstance
}
console.log('[WebSocket] Created new client instance')
}
return wsClientInstance
}
export const wsClient = getWebSocketClient()
// Lazy initialization - only create when accessed
let _wsClient: WebSocketClient | null = null
export const wsClient: WebSocketClient = (() => {
if (_wsClient) {
return _wsClient
}
try {
_wsClient = getWebSocketClient()
return _wsClient
} catch (error) {
console.error('[WebSocket] Error initializing client:', error)
// Fallback to new instance
_wsClient = new WebSocketClient()
return _wsClient
}
})()
// Helper to apply patches to data
export function applyDataPatch<T>(data: T, patch: PatchOperation[]): T {