Go to file
Daniel Abramov 683385b323 Update the autobahn tests to match `tungstenite`
See https://github.com/snapview/tungstenite-rs/pull/271/files
2022-03-23 10:27:56 +02:00
.github/workflows tests: use autobahn test suite as docker image 2021-08-12 08:45:05 +03:00
autobahn Update the autobahn tests to match `tungstenite` 2022-03-23 10:27:56 +02:00
examples Fix the echo server example to prevent ConnectionClosed error (#189) 2021-12-06 20:10:14 +02:00
scripts Fix autobahn scripts 2022-03-23 10:27:56 +02:00
src Refactor similar conditional branches in `WebSocketStream::poll_close` 2022-03-07 11:17:46 +02:00
tests Use 127.0.0.1 in tests to avoid firewall warnings 2021-08-12 08:45:05 +03:00
.gitignore Repository created. 2017-01-31 17:15:51 +01:00
CHANGELOG.md Update CHANGELOG.md for 0.17.1 2022-03-01 21:30:23 +02:00
Cargo.toml Update version to 0.17.1 2022-03-01 21:30:35 +02:00
LICENSE Port/rename to async-std / async-tungstenite 2019-11-12 15:09:12 +01:00
README.md feat: add two new features to allow using webpki-roots or rustls-native-certs 2021-06-01 16:10:16 +03:00

README.md

async-tungstenite

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

MIT licensed Crates.io Build Status

Documentation

Usage

Add this in your Cargo.toml:

[dependencies]
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-native-certs: Enables the additional functions in the tokio module to implement TLS via tokio-rustls and uses native system certificates found with rustls-native-certs.
  • tokio-rustls-webpki-roots: Enables the additional functions in the tokio module to implement TLS via tokio-rustls and uses the certificates webpki-roots provides.
  • 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.

tokio-tungstenite

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.