#websocket #io #web #tokio #async-std


Async binding for Tungstenite, the Lightweight stream-based WebSocket implementation

23 releases (12 breaking)

0.13.1 Mar 23, 2021
0.12.0 Jan 9, 2021
0.11.0 Dec 30, 2020
0.10.0 Oct 22, 2020
0.2.0 Nov 29, 2019

#2 in WebSocket

Download history 14461/week @ 2021-01-21 14773/week @ 2021-01-28 15697/week @ 2021-02-04 13591/week @ 2021-02-11 19690/week @ 2021-02-18 18145/week @ 2021-02-25 17313/week @ 2021-03-04 16515/week @ 2021-03-11 17450/week @ 2021-03-18 19078/week @ 2021-03-25 15782/week @ 2021-04-01 19232/week @ 2021-04-08 18705/week @ 2021-04-15 17225/week @ 2021-04-22 14893/week @ 2021-04-29 11655/week @ 2021-05-06

61,815 downloads per month
Used in 86 crates (49 directly)

MIT license

1.5K SLoC


Asynchronous WebSockets for async-std, tokio, gio and any std Futures runtime.

MIT licensed Crates.io Build Status



Add this in your Cargo.toml:

async-tungstenite = "*"

Take a look at the examples/ directory for client and server examples. You may also want to get familiar with async-std or tokio if you don't have any experience with it.

What is async-tungstenite?

This crate is based on tungstenite Rust WebSocket library and provides async bindings and wrappers for it, so you can use it with non-blocking/asynchronous TcpStreams from and couple it together with other crates from the async stack. In addition, optional integration with various other crates can be enabled via feature flags

  • async-tls: Enables the async_tls module, which provides integration with the async-tls TLS stack and can be used independent of any async runtime.
  • async-std-runtime: Enables the async_std module, which provides integration with the async-std runtime.
  • async-native-tls: Enables the additional functions in the async_std module to implement TLS via async-native-tls.
  • tokio-runtime: Enables the tokio module, which provides integration with the tokio runtime.
  • tokio-native-tls: Enables the additional functions in the tokio module to implement TLS via tokio-native-tls.
  • tokio-rustls: Enables the additional functions in the tokio module to implement TLS via tokio-rustls.
  • gio-runtime: Enables the gio module, which provides integration with the gio runtime.

Messages vs Streaming

WebSocket provides a message-oriented protocol, and this crate supports sending and receiving data in messages; protocols built on WebSocket are allowed to make message boundaries semantically significant. However, some users of WebSocket may want to treat the socket as a continuous stream of bytes. If you know the sending end does not place significance on message boundaries, and you want to process a stream of bytes without regard to those boundaries, try ws_stream_tungstenite, which builds upon this crate.


Originally this crate was created as a fork of tokio-tungstenite and ported to the traits of the futures crate. Integration into async-std, tokio and gio was added on top of that.


~212K SLoC