finds.dev← search

// the find

snapview/tokio-tungstenite

★ 2,467 · Rust · MIT · updated May 2026

Future-based Tungstenite for Tokio. Lightweight stream-based WebSocket implementation

Async wrapper around tungstenite that plugs WebSockets into the Tokio runtime. It's the de facto standard choice for WebSocket clients and servers in Tokio-based Rust apps — if you're using Axum, Actix, or Hyper and need WebSockets, you'll likely end up here.

Passes the full Autobahn test suite (conformance results are checked into the repo, not just claimed). TLS is properly gated behind feature flags so you don't pull in OpenSSL if you don't need it, and both native-tls and rustls are supported. The API surface is minimal — just a thin async stream wrapper over tungstenite with clean Sink/Stream implementations, which means it composes well with anything that speaks those traits. Active maintenance with a real CHANGELOG and recent performance improvements that close the gap with faster alternatives.

Performance ceiling is inherited from tungstenite's synchronous core — the async wrapper can't fix architectural decisions made in the underlying library. The known rustls panic on >=0.23.0 is mentioned in the README but not actually fixed, just documented, which is a weird place to leave a footgun. No built-in reconnect logic or ping/pong keepalive handling; you wire that yourself, and most production users end up writing the same boilerplate. The API requires you to split the stream to read and write concurrently, which trips up newcomers and the error message when you get it wrong is unhelpful.

View on GitHub →

// 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 →