JSON-RPC轻量级远程调用协议介绍及使用

JavaScript036

JSON-RPC轻量级远程调用协议介绍及使用,第1张

json-rpc是基于json的跨语言远程调用协议。比xml-rpc、webservice等基于文本的协议数据传输格小;相对hessian、java-rpc等二进制协议便于调试、实现、扩展,是很优秀的一种远程调用协议。眼下主流语言都已有json-rpc的实现框架,java语言中较好的json-rpc实现框架有jsonrpc4j、jpoxy、json-rpc。三者之中jsonrpc4j既可独立使用。又可与spring无缝集合,比较适合于基于spring的项目开发。

json-rpc协议很easy,发起远程调用时向服务端数据传输格式例如以下:

{ "method": "sayHello", "params": ["Hello JSON-RPC"], "id": 1}

参数说明:

method: 调用的方法名

params: 方法传入的参数。若无参数则传入 []

id : 调用标识符。用于标示一次远程调用过程

server其收到调用请求,处理方法调用,将方法效用结果效应给调用方;返回数据格式:

参数说明:

result: 方法返回值。若无返回值。则返回null。

若调用错误,返回null。

error :调用时错误,无错误返回null。

id : 调用标识符,与调用方传入的标识符一致。

以上就是json-rpc协议规范,很easy,小巧。便于各种语言实现。

2.1、server端Java调用演示样例

jsonrpc4jserver端java演示样例:

2.2、Javaclient调用演示样例

jsonrpc4j的Javaclient调用演示样例:

2.3、JavaScriptclient调用演示样例

基于jsonrpcjs的JavaScriptclient调用演示样例:

2.4、直接GET请求进行调用

无需不论什么client。仅仅需手工拼接参数进行远程调用,请求URL例如以下:

参数说明:

method : 方法名

params :调用参数。json的数组格式[], 将参数需先进行url编码,再进行base64编码

id : 调用标识符,随意值。

json-rpc是一种很轻量级的跨语言远程调用协议。实现及使用简单。

仅需几十行代码,就可以实现一个远程调用的client。方便语言扩展client的实现。

server端有php、java、python、ruby、.net等语言实现,是很不错的及轻量级的远程调用协议。

如果要查询主网上的交易记录,可以使用etherscan。但是,如果是你自己搭建的私链,应该如何查询交易记录呢?

答案是你需要自己监听链上的日志,存到数据库里,然后在这个数据库中查询。例如:

var addr = "0xbfb2e296d9cf3e593e79981235aed29ab9984c0f"

var filter = web3.eth.filter({fromBlock:0, toBlock:'latest', address: addr})

filter.get(function (err, transactions) {

  transactions.forEach(function (tx) {

    var txInfo = web3.eth.getTransaction(tx.transactionHash)   

     //这时可以将交易信息txInfo存入数据库

  })

})

web3.eth.filter()用来监听链上的日志,web3.eth.getTransaction()用来提取指定交易的信息,一旦获得交易信息,就可以存入数据库供查询用了。

推荐一个实战入门,你可以看看:以太坊教程