yewstack / yew

Rust / Wasm framework for creating reliable and efficient web applications
https://yew.rs
Apache License 2.0
30.71k stars 1.42k forks source link

Yew Agent documentation #3582

Open TiemenSch opened 9 months ago

TiemenSch commented 9 months ago

This is about:

Problem https://github.com/yewstack/yew/blob/master/website/versioned_docs/version-0.21/concepts/agents.mdx

The agents page states that agent communication happens over the bincode codec while it merely is a default. However, just like with gloo-worker itself, the Codec is already perfectly changeable.

Especially since bincode does not support "complicated" data in the sense that deserialize_any is unsupported (https://github.com/bincode-org/bincode/issues/386). This might prevent users from adopting a WebWorker or send them in a deserialization rabbit-hole as their data fails to be passed over the fence with bincode.

Also, is the public/private agent still a thing?

Details about the solution you'd like

I think the most pragmatic solution would be to change the docs to state that bincode is merely the default and point to the Fibonacci example that already uses postcard instead of bincode. yew-agent's docs itself could also point a bit better to what components dictate the codec (Registrar and Provider).

Additional context

https://github.com/yewstack/yew/blob/f6b23f08284dec949efaf860fbe8e9198e3d0bed/examples/web_worker_fib/src/agent.rs#L10

Questionaire (Optional)

FantasyPvP commented 2 months ago

this. literally have no idea how to use the agents. there is no decent documentation for them anywhere and it makes developing anything that requires that kind of functionality almost impossible.

TiemenSch commented 2 months ago

While not exactly documentation, I wrote the ratio-reactor crate as an easy to use webworker abstraction. Perhaps the crate and especially the examples are worth taking a look at. https://gitlab.com/ratio-case-os/rust/ratio-reactor