7 个版本
0.1.7 | 2023年8月31日 |
---|---|
0.1.6 | 2023年8月30日 |
62 在 #json-rpc
每月49 次下载
15KB
220 行
ajsonrpc
假设节点返回的响应是
- 有效的JSON
- 包含一个id字段
- id字段编码如下:"1" (字符串)
只要你的操作正确,你就不会有问题
如果你使用send()函数,也不应该丢弃oneshot Reciever。
比较ajsonrpc
与web3
库的基准测试示例。
在Ryzen 5 26000x和Ryzen 9 5950x的geth上运行。所有请求都是eth_syncing
请求。
同时进行了100万次请求。
ajsonrpc | web3 |
---|---|
36.1秒 | 72.7秒 |
ajsonrpc
比web3
快2.1倍。
100个并发请求
ajsonrpc | web3 | http (reqwests) |
---|---|---|
3.1792毫秒 | 5.5222毫秒 | 20.674毫秒 |
"普通" http 请求比ajsonrpc
慢8倍
使用方法
将此添加到你的Cargo.toml
[dependencies]
ajsonrpc = "0.1.0"
示例
use ajsonrpc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let router = ajsonrpc::WsRouter::new("ws://192.168.86.109:8546".to_string()).await?;
let id = 1;
let resp = router.make_request(format!(r#"{{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":"{}"}}"#, id), id).await?;
println!("Response: {:?}", resp);
Ok(())
}
依赖项
~9–24MB
~334K SLoC