finds.dev← search

// the find

Totodore/socketioxide

★ 1,606 · Rust · MIT · updated Jun 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →