goldenChat base source add

This commit is contained in:
aidev
2026-05-23 15:11:48 +09:00
commit a4ea7762b5
2081 changed files with 1155760 additions and 0 deletions
+117
View File
@@ -0,0 +1,117 @@
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Connection Test</title>
<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@stomp/stompjs@7/bundles/stomp.umd.min.js"></script>
<style>
body { font-family: Arial, sans-serif; padding: 20px; }
#status { padding: 10px; margin: 10px 0; border-radius: 5px; }
.connected { background: #4caf50; color: white; }
.disconnected { background: #f44336; color: white; }
.connecting { background: #ff9800; color: white; }
#messages { border: 1px solid #ccc; padding: 10px; height: 400px; overflow-y: auto; }
.message { padding: 5px; border-bottom: 1px solid #eee; }
</style>
</head>
<body>
<h1>🔌 WebSocket 연결 테스트</h1>
<div id="status" class="connecting">연결 중...</div>
<div>
<strong>WebSocket URL:</strong> <span id="ws-url"></span>
</div>
<div>
<strong>구독 토픽:</strong> /topic/candles/KRW-BTC/1m
</div>
<hr>
<h2>📨 수신 메시지</h2>
<div id="messages"></div>
<script>
// 현재 페이지의 프로토콜에 맞게 URL 생성
const protocol = window.location.protocol; // 'http:' or 'https:'
const host = window.location.host;
const WS_URL = `${protocol}//${host}/ws`;
document.getElementById('ws-url').textContent = WS_URL;
console.log('🔗 Connecting to:', WS_URL);
const client = new StompJs.Client({
webSocketFactory: () => new SockJS(WS_URL),
debug: (str) => {
console.log('[STOMP Debug]', str);
},
reconnectDelay: 5000,
heartbeatIncoming: 4000,
heartbeatOutgoing: 4000,
});
client.onConnect = (frame) => {
console.log('✅ Connected:', frame);
document.getElementById('status').className = 'connected';
document.getElementById('status').textContent = '✅ 연결됨 - ' + new Date().toLocaleTimeString();
// KRW-BTC 1분봉 구독
const subscription = client.subscribe('/topic/candles/KRW-BTC/1m', (message) => {
console.log('📨 Message received:', message.body);
try {
const data = JSON.parse(message.body);
const div = document.createElement('div');
div.className = 'message';
div.innerHTML = `
<strong>[${new Date().toLocaleTimeString()}]</strong>
${data.market} ${data.interval}:
${data.candles.length} candle(s),
type: ${data.type},
price: ${data.candles[0]?.close || 'N/A'}
`;
document.getElementById('messages').prepend(div);
} catch (e) {
console.error('Failed to parse message:', e);
}
});
console.log('✅ Subscribed to /topic/candles/KRW-BTC/1m');
const div = document.createElement('div');
div.className = 'message';
div.innerHTML = `<strong>[${new Date().toLocaleTimeString()}]</strong> ✅ 구독 완료: /topic/candles/KRW-BTC/1m`;
document.getElementById('messages').prepend(div);
};
client.onDisconnect = () => {
console.log('🔌 Disconnected');
document.getElementById('status').className = 'disconnected';
document.getElementById('status').textContent = '🔌 연결 끊김 - ' + new Date().toLocaleTimeString();
const div = document.createElement('div');
div.className = 'message';
div.innerHTML = `<strong>[${new Date().toLocaleTimeString()}]</strong> 🔌 연결 끊김`;
document.getElementById('messages').prepend(div);
};
client.onStompError = (frame) => {
console.error('❌ STOMP Error:', frame);
document.getElementById('status').className = 'disconnected';
document.getElementById('status').textContent = '❌ 오류: ' + (frame.headers.message || 'Unknown error');
const div = document.createElement('div');
div.className = 'message';
div.innerHTML = `<strong>[${new Date().toLocaleTimeString()}]</strong> ❌ 오류: ${frame.headers.message || 'Unknown'}`;
document.getElementById('messages').prepend(div);
};
client.onWebSocketError = (event) => {
console.error('❌ WebSocket Error:', event);
document.getElementById('status').className = 'disconnected';
document.getElementById('status').textContent = '❌ WebSocket 오류';
};
// 연결 시작
console.log('🚀 Activating STOMP client...');
client.activate();
</script>
</body>
</html>