A lightweight, stream-based WebSocket implementation for Rust, providing a complete RFC6455 protocol implementation.
Tungstenite is a lightweight, stream-based WebSocket implementation for Rust that provides a complete RFC6455 protocol implementation. It enables developers to build reliable networking applications using WebSockets, abstracting protocol details while allowing integration with custom event loops. The library supports both synchronous and asynchronous usage, with optional TLS for secure connections.
Rust developers building low-level networking applications, custom event loops, or foundational WebSocket-based services that require protocol correctness and flexibility without a specific async runtime.
Developers choose Tungstenite for its minimal, reliable core WebSocket implementation that passes the Autobahn Test Suite, offers TLS support, and integrates easily with third-party event loops like MIO, serving as a trusted foundation for higher-level abstractions.
Lightweight stream-based WebSocket implementation for Rust.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Fully compliant with RFC6455 and passes the Autobahn Test Suite, ensuring reliable WebSocket communication as stated in the README.
Works with synchronous streams like TcpStream and can be embedded in custom event loops such as MIO, offering control over network handling without imposing a runtime.
Supports secure connections via features for native-tls or rustls, allowing choice based on platform needs, though no TLS feature is activated by default.
Serves as a foundational building block for higher-level libraries like tokio-tungstenite, prioritizing protocol correctness without unnecessary bloat.
Lacks permessage-deflate implementation, which the README admits is missing and could limit bandwidth-sensitive applications.
Requires more manual code for common tasks like async integration, as it doesn't include higher-level abstractions, making setup more complex for some use cases.
While flexible, integrating with async runtimes requires additional effort and boilerplate compared to dedicated async libraries like tokio-tungstenite.