ntex provides a strongly typed component for building asynchronous network applications. It includes HTTP/1, HTTP/2, WebSocket, Mqtt3/5, Amqp1.0, TLS, and runtime-independent I/O support.
| 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 |_| wev::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 |
neon-uring |
Native runtime with io_uring on Linux |
neon-iocp |
Native runtime with IOCP on Windows |
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.cookieenables cookie support.urlenables URL parsing support.wsenables WebSocket APIs and is enabled by default.
- Framework guide
- Web framework documentation
- API documentation
- Examples
- Release changes
- 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)