Files
Magic-Garden-Bot/extension/modules/socket.js
2025-12-09 23:21:09 +00:00

50 lines
1.7 KiB
JavaScript

(function () {
const OriginalSend = WebSocket.prototype.send;
WebSocket.prototype.send = function (data) {
if (!window.MagicBot.socket || window.MagicBot.socket.readyState >= 2) {
window.MagicBot.socket = this;
window.MagicBot.emit('socket_connected', true);
console.log("[MagicBot] Socket captured.");
// Extract Player ID from URL
try {
const urlObj = new URL(this.url);
let pid = urlObj.searchParams.get('playerId');
if (pid) pid = pid.replace(/^"|"$/g, '');
window.MagicBot.state.playerId = pid;
console.log("[MagicBot] Player ID:", pid);
} catch (e) { }
this.addEventListener('close', () => {
window.MagicBot.emit('socket_connected', false);
});
// Capture Incoming
this.addEventListener('message', (e) => {
window.MagicBot.emit('log', { type: 'RX', data: e.data });
try {
const msg = JSON.parse(e.data);
window.MagicBot.emit('packet_received', msg);
} catch (err) { }
});
}
// Capture Outgoing
window.MagicBot.emit('log', { type: 'TX', data: data });
return OriginalSend.apply(this, arguments);
};
// Helper to send messages safely
window.MagicBot.send = function (msg) {
if (window.MagicBot.socket && window.MagicBot.socket.readyState === 1) {
window.MagicBot.socket.send(JSON.stringify(msg));
} else {
console.error("Socket not ready.");
}
};
console.log('[MagicBot] Socket hook loaded.');
})();