Tauri Plugin httpd
A Tauri plugin that provides multi-instance HTTP server support. Built on Axum, it allows you to run multiple dynamic API routers and static file servers on different ports simultaneously, with native support for Tauri's path variables (e.g., $APPDATA).
Features
-
Multi-port Listening: Spin up multiple HTTP instances in one plugin instance.
-
Hybrid Modes: Host an Axum Router on one port and static assets on another.
-
Path Resolution: Native support for $APPDATA, $RESOURCE, and other Tauri's path variables.
-
Async Performance: Powered by the Tauri async runtime; won't block your main thread.
Installation
- Add the dependency to your
src-tauri/Cargo.toml:
[]
= { = "https://github.com/alwynkalleii/tauri-plugin-httpd", = "v2" }
- Modify
lib.rsto initialize the plugin:
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
+ .plugin(tauri_plugin_httpd::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
- Install the JavaScript Guest bindings using your preferred JavaScript package manager:
npm add tauri-plugin-httpd-api
Usage
1. Static Path Resolution
The listen_static method supports the following path formats:
use HttpdExt;
or use javascript:
import from "tauri-plugin-httpd-api";
await ;
const services = await ;
console.log;
await ;
Supported Formats:
-
Absolute Paths: e.g.,
C:\Users\Name\Documents(Windows) or/var/www(Linux). -
Tauri Variables: Supports all Tauri Path Variables such as
$APPDATA,$RESOURCE,$DOCUMENT, etc.
2. Custom Router
Add axum to your dependencies (required to define custom router):
The listen method supports custom your router:
use ;
use HttpdExt;
Permissions
This default permission set includes the following:
allow-stop-serviceallow-get-servicesallow-listen-static
License
MIT