#grpc #grpc-client #tonic #wasm-client #web-client

tonic-web-wasm-client

grpc-web implementation for use by tonic clients in browsers via webassembly

15 releases

0.6.0 Jul 28, 2024
0.5.1 Feb 11, 2024
0.5.0 Sep 28, 2023
0.4.0 May 4, 2023
0.2.1 Jul 30, 2022

#39 in WebAssembly

Download history 3264/week @ 2024-08-22 2983/week @ 2024-08-29 3208/week @ 2024-09-05 3590/week @ 2024-09-12 2632/week @ 2024-09-19 2179/week @ 2024-09-26 3039/week @ 2024-10-03 2225/week @ 2024-10-10 2402/week @ 2024-10-17 2380/week @ 2024-10-24 4546/week @ 2024-10-31 4393/week @ 2024-11-07 3946/week @ 2024-11-14 4939/week @ 2024-11-21 5313/week @ 2024-11-28 4867/week @ 2024-12-05

19,768 downloads per month
Used in 17 crates (8 directly)

MIT/Apache

42KB
762 lines

tonic-web-wasm-client

Rust implementation of grpc-web protocol that allows using tonic in browsers via webassembly.

Usage

To use tonic-web-wasm-client, you need to add the following to your Cargo.toml:

[dependencies]
tonic-web-wasm-client = "0.6"

Example

To use tonic gRPC clients in browser, compile your code with tonic's transport feature disabled (this will disable the default transport layer of tonic). Then initialize the query client as follows:

use tonic_web_wasm_client::Client;

let base_url = "http://localhost:9001"; // URL of the gRPC-web server
let query_client = QueryClient::new(Client::new(base_url)); // `QueryClient` is the client generated by tonic

let response = query_client.status().await; // Execute your queries the same way as you do with defaule transport layer

Building

Since tonic-web-wasm-client is primarily intended for use in browsers, a crate that uses tonic-web-wasm-client can only be built for wasm32 target architectures:

cargo build --target wasm32-unknown-unknown

Other option is to create a .cargo/config.toml in your crate repository and add a build target there:

[build]
target = "wasm32-unknown-unknown"

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~12–21MB
~285K SLoC