Hacking Google Chrome Source Code: Make Puppeteer work over Redis PubSub
3 days ago
- #DevTools
- #Redis
- #Chromium
- Traditional approach uses Chromium Remote Debugging Server with DevTools over TCP/IP, leading to complexity and instability.
- Proposed solution: Reverse connection model using Redis for pub/sub messaging to improve reliability and reduce packet loss.
- Challenges include Chromium's lack of native Redis support, requiring an intermediate translation layer.
- Alternative approach: Integrate Redis directly into Chromium's DevTools server for better performance and reliability.
- Chromium's architecture overview includes Blink, V8, Net, Mojo, Content, and Chrome components.
- DevTools implementation in Chromium includes HTTP and pipe handlers, with focus on the simpler pipe handler for extension.
- Pipe handler workflow involves Reader and Writer classes for message handling over pipes.
- Custom Redis client implementation in C++ to avoid external dependencies and simplify build integration.
- Modifications to the pipe handler to support Redis messaging, including channel-based communication for each browser instance.
- Practical usage involves launching Chromium with Redis connection parameters and setting up a WebSocket-to-Redis gateway for DevTools clients.