NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1902 most downloaded on crates.io
Async binding for Tungstenite, the Lightweight stream-based WebSocket implementation
Last release 2 months ago
28 Jul 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 43 of 58 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
58 releases · first in 2019
Deprecate async-tls and async-std related features.
Add deprecation notice for async-std.
futures-rustls features for rustls support via the smol runtime.One column per quarter.
Update to async-native-tls 0.6.
Update GLib/gio support to version 0.22 of the bindings.
Add tokio-rustls-platform-verifier feature to use that crate for certificate verification.
tokio-rustls-platform-verifier feature to use that crate for
certificate verification.Add WebSocketStream::into_inner() to get the underlying stream.
WebSocketStream::into_inner() to get the underlying stream.WebSocketSender::send() and close() require a mutable reference now.
WebSocketSender::send() and close() require a mutable reference now.Add support for splitting a WebSocketStream into a sender and receiver type without making use of the future's Sink trait, and re-combining them again
WebSocketStream into a sender and receiver
type without making use of the future's Sink trait, and re-combining them
again into a single value.Added wrappers that allow treating a WebSocket as a byte stream. ByteWriter allows using any Sink as an AsyncWrite. ByteReader allows using any Stream
Added wrappers that allow treating a WebSocket as a byte stream. ByteWriter
allows using any Sink<Stream> as an AsyncWrite. ByteReader allows using
any Stream<Item = tungstenite::Result<Message>> as an AsyncRead.
Note that ByteReader will treat all bytes received as uniform, including
for instance the contents of Close or Ping/Pong messages; if you need to
handle the contents of a Close, don't use this.
You may want to wrap these in a BufWriter or BufReader for efficiency.
### Changed - Update to tungstenite 0.26.
Add alloc feature to futures_task dependency to make sure futures-task::ArcWake is available.
alloc feature to futures_task dependency to make sure futures-task::ArcWake is available.Added WebSocketStream::send() and make the Sink impl and futures_util dependency optional.
WebSocketStream::send() and make the Sink impl and futures_util
dependency optional.futures_task::ArcWake, which is fixed in 0.3.31.Update to rustls-native-certs 0.8.
Update glib / gio dependencies to 0.20.
Work around bug related to futures_task::ArcWake, which causes busy looping because of spurious waker "changes" caused by creating the same waker with
futures_task::ArcWake, which causes
busy looping because of spurious waker "changes" caused by creating the same
waker with different vtables.New url feature that maps to the corresponding feature from tungstenite and allows connecting directly to ws / wss URLs.
url feature that maps to the corresponding feature from tungstenite
and allows connecting directly to ws / wss URLs.Don't include default features for various dependencies.
Fix tokio support for async-tls.
### Changed - Update to glib/gio 0.19. - Update to async-tls 0.13.
Update tokio-rustls to 0.25 and rustls-native-certs to 0.7.
Gracefully handle invalid native root certificates
poll_ready() call.New tokio-rustls-manual-roots feature for dropping the dependency on webpki-roots.
tokio-rustls-manual-roots feature for dropping the dependency on
webpki-roots.Fix poll_flush on a closed connection.
poll_flush on a closed connection.### Changed - Update to tokio-rustls 0.24
Update to async-native-tls 0.5 and webpki-roots 0.23
gio::accept_async() API for the gio integration similar to the existing
API for tokio and async-stdUpdate to async-tls 0.12 and env-logger 0.10.
Update to tungstenite 0.18 and make the "handshake" feature optional but enabled by default.
### Changed - Update to gio/glib 0.16.
The Stream implementation on WebSocketStream now implements FusedStream and will always return None after an error was returned or the stream was clos
Stream implementation on WebSocketStream now implements
FusedStream and will always return None after an error was returned or
the stream was closed cleanly.Fix poll_close returning WouldBlock error kind.
poll_close returning WouldBlock error kind.Update to async-native-tls 0.4.
Fix connecting to URLs containing plain IPv6 addresses in brackets.
Update to tungstenite 0.16, rusttls 0.20, tokio-rustls 0.23, etc.
Fix and clean up autobahn tests.
Remove tokio-rustls feature and replace with tokio-rustls-webpki-roots and tokio-rustls-native-certs features that allow selecting the certificate che
tokio-rustls feature and replace with tokio-rustls-webpki-roots
and tokio-rustls-native-certs features that allow selecting the
certificate checking backend.verbose-logging feature that enables more verbose logging via the
log crate, which was enabled by default before.gio-runtime feature to glib/gio 0.14.client_async_tls_with_connector_and_config() a public function to
allow creating a WebSocket connection from a Stream.As such, connections always failed. Technically this is a breaking change when using this feature but in practice this a) wouldn't have worked anyway…
tokio-openssl TLS implementation was broken in
previous versions as no TLS connection was established before trying to
establish the WebSocket connection. As such, connections always failed.
Technically this is a breaking change when using this feature but in
practice this a) wouldn't have worked anyway and b) it's unlikely someone
uses the API in a way that would stop compiling now.### Changed - Updated to tungstenite 0.13
Updated tungstenite to version 0.12
TokioAdapter is now created via TokioAdapter::newUpdated async-tls to version 0.11
### Changed - Updated tokio to version 0.3
Configure the server trust anchors for tokio-rustls
Implemented the tokio::client_async_tls* functions for async-tls and tokio-rustls
tokio::client_async_tls* functions for async-tls and tokio-rustlsNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
[Unreleased]: https://github.com/sdroege/async-tungstenite/compare/0.35.0...HEAD [0.35.0]: https://github.com/sdroege/async-tungstenite/compare/0.35.0
-->
<!-- [0.9.1]: https://github.com/sdroege/async-tungstenite/compare/0.9.1...0.9.0 [0.9.0]: https://github.com/sdroege/async-tungstenite/compare/0.9.0...0.8.0 [0.8.0]: https://github.com/sdroege/async-tungstenite/compare/0.8.0...0.7.1 [0.7.1]: https://github.com/sdroege/async-tungstenite/compare/0.7.1...0.7.0 [0.7.0]: https://github.com/sdroege/async-tungstenite/compare/0.7.0...0.6.0 [0.6.0]: https://github.com/sdroege/async-tungstenite/compare/0.6.0...0.5.0 [0.5.0]: https://github.com/sdroege/async-tungstenite/compare/0.5.0...0.4.2 [0.4.2]: https://github.com/sdroege/async-tungstenite/compare/0.4.2...0.4.1 [0.4.1]: https://github.com/sdroege/async-tungstenite/compare/0.4.1...0.4.0 [0.4.0]: https://github.com/sdroege/async-tungstenite/compare/0.4.0...0.3.1 [0.3.1]: https://github.com/sdroege/async-tungstenite/compare/0.3.1...0.3.0 [0.3.0]: https://github.com/sdroege/async-tungstenite/compare/0.3.0...0.2.1 [0.2.1]: https://github.com/sdroege/async-tungstenite/compare/0.2.1...0.2.0 [0.2.0]: https://github.com/sdroege/async-tungstenite/compare/0.2.0...0.1.1 [0.1.1]: https://github.com/sdroege/async-tungstenite/compare/0.1.1...0.1.0 [0.1.0]: https://github.com/sdroege/async-tungstenite/releases/tag/v0.1.0 -->
Your coding agent can read these notes before it upgrades. Set up the MCP server →