ntex provides a strongly typed component for building asynchronous network applications. It includes HTTP/1, HTTP/2, WebSocket, TLS, and runtime-independent I/O support. MQTT, AMQP, and gRPC are provided by related projects.
| Platform | Status |
|---|---|
| Linux | |
| macOS | |
| Windows |
Add ntex to your project:
[dependencies]
ntex = "4"A minimal web server looks like this:
use ntex::{SharedCfg, web};
#[web::get("/")]
async fn index() -> &'static str {
"Hello world!"
}
#[ntex::main]
async fn main() -> std::io::Result<()> {
web::HttpServer::new(async |_| web::App::new().service(index))
.bind("127.0.0.1:8080", SharedCfg::new("hello-world"))?
.run()
.await
}Without an explicit runtime feature, ntex uses its native single-threaded runtime and automatically selects a platform I/O reactor:
- Linux tries
io_uringand falls back to polling. - Other Unix platforms use polling.
- Windows uses IOCP.
Alternative runtimes and native reactors can be selected with Cargo features:
| Feature | Runtime or reactor |
|---|---|
tokio |
Tokio local runtime and I/O driver |
compio |
Compio runtime and completion-based I/O |
neon-polling |
Native runtime with the polling reactor on Unix |
neon-uring |
Native runtime with io_uring on Linux |
Enable at most one runtime or native-reactor selection feature. For example:
[dependencies]
ntex = { version = "4", features = ["tokio"] }opensslandrustlsenable the corresponding TLS integrations.compressenables HTTP content compression (gzip, deflate and zstd).cookieenables cookie support.wsenables WebSocket APIs and is enabled by default.
| Project | Description |
|---|---|
| ntex-mqtt | Client and server framework for MQTT v5 and v3.1.1 |
| ntex-amqp | Client and server framework for AMQP 1.0 |
| ntex-grpc | Client and server framework for gRPC |
- Framework guide
- Web framework documentation
- API documentation
- Examples
- Release changes
- Migrating from ntex 3 to ntex 4
- Minimum supported Rust version: 1.97
This project is licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)