stateroom-wasm is a companion crate to
stateroom that helps you package and
export services as WebAssembly modules.
WebAssembly modules must import and export certain named functions in order for the
Stateroom server to understand them.
stateroom_wasm provides the
which should be applied to an item (
type alias) that implements
A Stateroom-compatible WebAssembly module must contain exactly one service. If you need to generate multiple services for your application, currently the best approach is to make a crate for each service.
It's possible to generate bindings for a service that belongs to another module using
type Service = SomeService;
Upon initialization, the generated model creates an instance of your
by calling its
new(room_id, context) constructor. The context object that is passed in the
constructor and subsequent function calls is a global static object that binds to functions
imported from the host environment (like
If you are using the Stateroom command-line interface,
stateroom dev will build the
current crate using the
wasm32-wasi target, and then load and serve the generated
If you would like to build it manually, make sure you have the
wasm32-wasi target installed
and pass it as a target to
This crate has a counterpart,
stateroom-wasm-host, which can take a module generated with
this crate and expose it through a StateroomService interface.