mezzenger-webworker

Transport for communication with Web Workers.

https://crates.io/crates/mezzenger-webworker

ko-fi

usage

Add dependencies to Cargo.toml:

```toml [dependencies]

...

serde = { version = "1", features = ["derive"] } kodec = { version = "0.1.0", features = ["binary"] } # or json or different one from another crate... mezzenger = "0.1.0" mezzenger-webworker = "0.1.0" ```

In your main code:

```rust mod message { #[derive(Debug, Serialize, Deserialize)] struct Host { ... }

#[derive(Debug, Serialize, Deserialize)] struct Worker { ... } }

// ...

let worker = Rc::new(Worker::new("./worker.js").unwrap()); let mut transport: Transport<_, Codec, message::Worker, message::Host> = Transport::new(&worker, Codec::default()).await.except("failed to open transport");

use mezzenger::Receive; let received = transport.receive().await.except("failed to receive message");

let message = message::Host { ... }; transport.send(&message).await.except("failed to send message");

```

In Web Worker:

```rust mod message { #[derive(Debug, Serialize, Deserialize)] struct Host { ... }

#[derive(Debug, Serialize, Deserialize)] struct Worker { ... } }

// ...

let mut transport: Transport<_, Codec, message::Host, message::Worker> = Transport::newinworker(Codec::default()).await.except("failed to open transport");

let message = message::Worker { ... }; transport.send(&message).await.except("failed to send message");

use mezzenger::Receive; let received = transport.receive().await.except("failed to receive message");

```

See rust-webapp-template for more comprehenisve example.

see also

mezzenger

rust-webapp-template

Using Web Workers

WASM in Web Worker