react-activity-tracker
Version:
A library to track user interactions and API activity in React apps
35 lines (28 loc) • 858 B
JavaScript
// src/patchers/patchWebSocket.js
export default function patchWebSocket(onTrack) {
const OriginalWebSocket = window.WebSocket;
function TrackedWebSocket(...args) {
const socket = new OriginalWebSocket(...args);
const [url] = args;
socket.addEventListener('message', (e) => {
onTrack({
type: 'websocket-receive',
url,
data: e.data,
time: new Date().toISOString(),
});
});
const originalSend = socket.send;
socket.send = function (data) {
onTrack({
type: 'websocket-send',
url,
data,
time: new Date().toISOString(),
});
return originalSend.call(socket, data);
};
return socket;
}
window.WebSocket = TrackedWebSocket;
}