3 ms·
I'm not sure about the implementation in Session Stack, but I work at LogRocket (https://logrocket.com https://logrocket.com) where we're solving a similar prob
by benthehenten 9y ago
I'm not sure about the implementation in Session Stack, but I work at LogRocket (https://logrocket.com https://logrocket.com) where we're solving a similar problem. We use a few methods to ensure that we have a minimal overhead on performance.
- We use worker threads for data encoding and network I/O
- We use the MutationObserver API for capturing diffs of the DOM
- We pull static resources directly from an application's servers (vs uploading from the client)
- Loading method shims first (and later the rest of our SDK asynchronously) to reduce initial loading time
- Batching requests and waiting for network downtime to send data
- We use Protobufs as a wire format for reducing bandwidth
I'm sure Session Stack employs some similar techniques- would be curious to hear about methods they're using as well.
- GeoffIsTheBest 9y agoAs the first LR evangelist (there are many now) at my workplace I am always curious how you guys do what you do. Looks like pure magic. I've poked around in the console a fair amount but would be really interested in two things you listed above: - "We use the MutationObserver API for capturing diffs of the DOM" - "We use Protobufs as a wire format for reducing bandwidth" I know you all write pretty awesome JS articles on a regular basis but I have so many questions about how LR works! Spill the beans but not the secret sauce!
- sonaltr 9y ago> - We use worker threads for data encoding and network I/O Is this open sourced? I would like to understand how this works? (how do you capture network i/o?)