netstack.fm

← netstack.fm24 févr. · 1 h 06 min

socketioxide with Théodore Prévot

socketioxide with Théodore Prévot24 févr.1 h 06 min

<p>episode 28: socketioxide with Théodore Prévot.<br /></p><p>This episode features an in-depth conversation with Théodore Prévot, creator and maintainer of the Rust crate socketioxide. We explore the origins of the project, how a personal writing app led to implementing a full Socket.IO server in Rust, and what it takes to build and maintain a high-level real-time protocol on top of Tokio, Tower, and the Rust HTTP ecosystem.<br /></p><p>Théodore walks us through the layered architecture of Engine.IO and Socket.IO, explains concepts like rooms, namespaces, acknowledgements, adapters, and connection recovery, and reflects on protocol versioning and compatibility challenges. We also dive into one of the hardest technical problems behind socketioxide: building a custom lazy JSON deserializer wrapper around Serde to efficiently route and decode mixed JSON and binary payloads.<br /></p><p>Finally, we discuss abstraction boundaries, async runtime considerations, integration testing strategies, the possibility of a Rust client implementation, and what motivates long-term open source maintenance.<br /></p><p><b>Learn more:</b><br /></p><ul><li><a rel="noopener noreferrer nofollow" href="https://docs.rs/socketioxide/latest/socketioxide/" target="_blank">https://docs.rs/socketioxide/latest/socketioxide/</a> — socketioxide documentation</li><li><a rel="noopener noreferrer nofollow" href="https://github.com/Totodore/socketioxide" target="_blank">https://github.com/Totodore/socketioxide</a> — socketioxide GitHub repository</li><li><a rel="noopener noreferrer nofollow" href="https://totodore.github.io/serde-wrapper/" target="_blank">https://totodore.github.io/serde-wrapper/</a> — Custom Serde deserializer article</li><li><a rel="noopener noreferrer nofollow" href="https://socket.io/docs/v4/" target="_blank">https://socket.io/docs/v4/</a> — Official Socket.IO documentation</li><li><a rel="noopener noreferrer nofollow" href="https://github.com/socketio/engine.io-protocol" target="_blank">https://github.com/socketio/engine.io-protocol</a> — Engine.IO protocol reference</li><li><a rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=HEhhWL1oUTM" target="_blank">https://www.youtube.com/watch?v=HEhhWL1oUTM</a> — Talk featuring Théodore Prévot</li></ul><p></p><p><b>Rama</b><br /></p><p>If you like this podcast you might also like our modular network framework in Rust: https://ramaproxy.org</p><p><br /><b>Chapters</b><br /></p><ul><li>00:00 Intro</li><li>01: