Show Notes
episode 28: socketioxide with Théodore Prévot.
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.
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.
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.
Learn more:
https://docs.rs/socketioxide/latest/socketioxide/ — socketioxide documentation https://github.com/Totodore/socketioxide — socketioxide GitHub repository https://totodore.github.io/serde-wrapper/ — Custom Serde deserializer article https://socket.io/docs/v4/ — Official Socket.IO documentation https://github.com/socketio/engine.io-protocol — Engine.IO protocol reference https://www.youtube.com/watch?v=HEhhWL1oUTM — Talk featuring Théodore Prévot
Rama
If you like this podcast you might also like our modular network framework in Rust: https://ramaproxy.org
Chapters
00:00 Intro 01:04 Get to know Théodore Prévot 06:43 The origins of socketioxide 08:50 Understanding Engine.IO and Its Role 11:43 The Evolution of Socket.IO and Its Features 22:49 Integration with Other Protocols and Frameworks 25:45 Understanding the boundaries of Socket.IO vs Engine.IO 35:38 Custom JSON Deserialization Challenges 40:54 Navigating Socket.IO Versioning 47:02 Abstraction in socketioxide 57:04 Future Directions for socketioxide 01:05:26 Outro
Netstack.FM
More information: https://netstack.fm/#episode-28 Join our Discord: https://discord.gg/29EetaSYCD Reach out to us: [email protected]
Music for this episode was composed by Dj Mailbox. Listen to his music at https://on.soundcloud.com/4MRyPSNj8FZoVGpytj
More from netstack.fm
Episode 38: Building and testing network stacks with Rama. In this Protocol Shorts episode of Netstack.fm, Glen talks with Brecht Stamper about Rama, the modular Rust framework for building clients, servers, proxies, and other network systems. Brecht shares how he came to understand Rama’s core idea that everything is a service, and why that simple input to output contract makes it easier to compose complex stacks without constantly inventing new traits or glue code.
episode 37: dial9: from black box to insight in Tokio.
Remaster of: Season 1 · Episode 3 — OpenTelemetry, eBPF, and Metoro
Remaster of: Season 1 · Episode 5 — Tokio with Carle Lerche