#json-rpc #router #websocket #http-request

ajsonrpc

面向性能的WebSocket JSON-RPC 路由器

7 个版本

0.1.7 2023年8月31日
0.1.6 2023年8月30日

62#json-rpc

每月49 次下载

MIT 许可证

15KB
220

ajsonrpc

假设节点返回的响应是

  • 有效的JSON
  • 包含一个id字段
  • id字段编码如下:"1" (字符串)

只要你的操作正确,你就不会有问题

如果你使用send()函数,也不应该丢弃oneshot Reciever。

比较ajsonrpcweb3库的基准测试示例。
在Ryzen 5 26000x和Ryzen 9 5950x的geth上运行。所有请求都是eth_syncing请求。

同时进行了100万次请求。

ajsonrpc web3
36.1秒 72.7秒

ajsonrpcweb3快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