// the find
Totodore/socketioxide
A socket.io server implementation in Rust that integrates with the Tower ecosystem and the Tokio stack.
A Socket.io server implementation in Rust built as a Tower middleware layer, so it drops into any Tower-compatible framework (Axum, Hyper, Warp, etc.) without ceremony. It implements both the engine.io and socket.io protocols from scratch, including polling and WebSocket transports, binary packets, namespaces, rooms, and ack support. Aimed at teams who want socket.io semantics in a Rust backend without running a Node sidecar.
The Tower integration is the right architectural call — you get CORS, auth, and compression middleware for free without any socketioxide-specific hooks. Horizontal scaling adapters for Redis, Postgres, and MongoDB are first-class crates with their own test suites, not afterthoughts. The extractor-based handler API (borrowing Axum's pattern) makes handler signatures self-documenting and avoids the callback soup you'd write manually. The e2e test suite runs against the official socket.io JS client test suite, so protocol conformance is actually verified rather than assumed.
Protocol v4 support (engine.io v3, socket.io v1–v2 era) is behind a feature flag and feels like a maintenance burden waiting to happen — the JS ecosystem has largely moved on, and carrying both protocol generations in one library will eventually cause problems. The adapter implementations require you to already have Redis/Postgres/MongoDB running and configured; there's no built-in in-memory multi-node simulation for local testing of clustered behavior. Binary packet support exists but the ergonomics are rough — you pass raw `Vec<u8>` blobs alongside your JSON payload rather than having a unified binary-capable serialization path. At 1,600 stars it's still relatively niche, so production war stories and bug reports are sparse compared to what you'd find for the Node reference implementation.