Replace master branch with local files
This commit is contained in:
commit
875a53f499
60 changed files with 21637 additions and 0 deletions
56
frontend/src/lib/websocket.js
Normal file
56
frontend/src/lib/websocket.js
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
let ws = null;
|
||||
let reconnectTimeout = null;
|
||||
|
||||
const WS_URL = import.meta.env.VITE_WS_URL || 'ws://localhost/ws';
|
||||
|
||||
export function connectWebSocket(onMessage) {
|
||||
if (ws?.readyState === WebSocket.OPEN) return;
|
||||
|
||||
// WebSocket doesn't support withCredentials, but cookies are sent automatically
|
||||
// on same-origin requests
|
||||
ws = new WebSocket(`${WS_URL}/stream`);
|
||||
|
||||
ws.onopen = () => {
|
||||
console.log('WebSocket connected');
|
||||
ws?.send(JSON.stringify({ type: 'subscribe' }));
|
||||
};
|
||||
|
||||
ws.onmessage = (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
onMessage(data);
|
||||
} catch (error) {
|
||||
console.error('Failed to parse WebSocket message:', error);
|
||||
}
|
||||
};
|
||||
|
||||
ws.onerror = (error) => {
|
||||
console.error('WebSocket error:', error);
|
||||
};
|
||||
|
||||
ws.onclose = () => {
|
||||
console.log('WebSocket disconnected');
|
||||
// Reconnect after 5 seconds
|
||||
reconnectTimeout = setTimeout(() => {
|
||||
connectWebSocket(onMessage);
|
||||
}, 5000);
|
||||
};
|
||||
}
|
||||
|
||||
export function disconnectWebSocket() {
|
||||
if (reconnectTimeout) {
|
||||
clearTimeout(reconnectTimeout);
|
||||
reconnectTimeout = null;
|
||||
}
|
||||
|
||||
if (ws) {
|
||||
ws.close();
|
||||
ws = null;
|
||||
}
|
||||
}
|
||||
|
||||
export function sendMessage(message) {
|
||||
if (ws?.readyState === WebSocket.OPEN) {
|
||||
ws.send(JSON.stringify(message));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue