Skip to content
Artwork for netstack.fm
netstack.fm · February 24 · 1 hr 6 min

socketioxide with Théodore Prévot

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: hello@netstack.fm Music for this episode was composed by Dj Mailbox. Listen to his music at https://on.soundcloud.com/4MRyPSNj8FZoVGpytj

0:00-1:06:24

transcript

No transcript — this publisher did not publish one.

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:

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: hello@netstack.fm


Music for this episode was composed by Dj Mailbox. Listen to his music at https://on.soundcloud.com/4MRyPSNj8FZoVGpytj

links6