import { getSupabaseUrl } from '@/lib/supabase/config'; /** * 기본 서버 연결 상태 검사 유틸리티 */ export const verifyServerConnection = async (): Promise<{ connected: boolean; message: string; statusCode?: number; }> => { try { const start = Date.now(); // Supabase URL 가져오기 const supabaseUrl = getSupabaseUrl(); if (!supabaseUrl) { return { connected: false, message: 'Supabase URL이 설정되지 않았습니다.' }; } // 캐시 방지용 쿼리 파라미터 추가 const cacheParam = `?_nocache=${Date.now()}`; // 서버 연결 상태 확인 const response = await fetch(`${supabaseUrl}/auth/v1/${cacheParam}`, { method: 'GET', headers: { 'Content-Type': 'application/json' }, signal: AbortSignal.timeout(8000) }); const elapsed = Date.now() - start; // 200, 401, 404 응답도 서버가 살아있다는 신호로 간주 if (response.ok || response.status === 401 || response.status === 404) { return { connected: true, message: `서버 연결 성공 (응답 시간: ${elapsed}ms)`, statusCode: response.status }; } else { return { connected: false, message: `서버 응답 오류: ${response.status} ${response.statusText}`, statusCode: response.status }; } } catch (error: any) { console.error('서버 연결 확인 중 오류:', error); let errorMessage = '알 수 없는 네트워크 오류'; if (error.message) { if (error.message.includes('Failed to fetch')) { errorMessage = '서버 연결 실패'; } else if (error.message.includes('NetworkError')) { errorMessage = '네트워크 연결 실패'; } else if (error.message.includes('timeout') || error.message.includes('timed out')) { errorMessage = '서버 응답 시간 초과'; } else { errorMessage = error.message; } } return { connected: false, message: errorMessage }; } };