Files
profitable-expert-advisor/polymarket/gui/static/js/utils/WebSocketManager.js
T
zhutoutoutousan 98a87a69ca Update
2026-02-13 08:03:25 +01:00

72 lines
1.8 KiB
JavaScript

/**
* WebSocket Manager
* Handles all WebSocket connections and events
*/
export class WebSocketManager {
constructor(socket) {
this.socket = socket;
this.handlers = new Map();
this.setup();
}
setup() {
this.socket.on('connect', () => {
console.log('[WebSocket] Connected to server');
});
this.socket.on('disconnect', () => {
console.log('[WebSocket] Disconnected from server');
});
// Backtest events
this.socket.on('backtest_log', (data) => {
this.emit('backtest_log', data);
});
this.socket.on('backtest_trade', (data) => {
this.emit('backtest_trade', data);
});
this.socket.on('backtest_equity', (data) => {
this.emit('backtest_equity', data);
});
this.socket.on('backtest_complete', (data) => {
this.emit('backtest_complete', data);
});
this.socket.on('backtest_error', (data) => {
this.emit('backtest_error', data);
});
// Strategy events
this.socket.on('strategy_update', (data) => {
this.emit('strategy_update', data);
});
}
on(event, handler) {
if (!this.handlers.has(event)) {
this.handlers.set(event, []);
}
this.handlers.get(event).push(handler);
}
off(event, handler) {
if (this.handlers.has(event)) {
const handlers = this.handlers.get(event);
const index = handlers.indexOf(handler);
if (index > -1) {
handlers.splice(index, 1);
}
}
}
emit(event, data) {
if (this.handlers.has(event)) {
this.handlers.get(event).forEach(handler => handler(data));
}
}
}