[−][src]Crate wasi_worker
This crate provides rust library to easily compose WASM/WASI browser service worker.
General overview
ServiceWorker is a singleton which holds input and output file handles and owns worker via Handler trait. Worker is supposedly reactive, usually operating on incoming events (on_message) and posting messages to main browser application via ServiceWorker::post_message().
Example usage:
use wasi_worker::*; struct MyWorker {} impl Handler for MyWorker { fn on_message(&self, msg: &[u8]) -> std::io::Result<()> { // Process incoming message println!("My Worker got message: {:?}", msg); Ok(()) } } fn main() { // In WASI setup with JS glue all output will be posted to memfs::/output.bin // In native OS to be able to run test from shell output goes to ./output.bin let opt = ServiceOptions::default().with_cleanup(); let output_file = match &opt.output { FileOptions::File(path) => path.clone() }; ServiceWorker::initialize(opt) .expect("ServiceWorker::initialize"); // Attach Agent to ServiceWorker as message handler singleton ServiceWorker::set_message_handler(Box::new(MyWorker {})); // Send binary message to main browser application ServiceWorker::post_message(b"message") .expect("ServiceWorker.post_message"); }
Structs
ServiceOptions | Options for ServiceWorker |
ServiceWorker | Connects Rust Handler with browser service worker via WASI filesystem. |
Enums
FileOptions | Instructs on file descriptor configuration for ServiceWorker |
Traits
Handler | Handler for incoming messages via ServiceWorker |
Functions
message_ready |