主题
JSON-RPC 简介
1. 什么是 JSON-RPC
JSON-RPC 是一种基于 JSON 格式的远程过程调用(RPC)协议。它是一种轻量级、无状态的通信协议,支持双向通信,常用于客户端与服务端之间的数据交换。
特点:
- 简单、易于实现
- 使用 JSON 格式作为数据编码
- 与 HTTP、WebSocket 等传输协议兼容
2. 消息结构
一个标准的 JSON-RPC 请求格式如下:
json
{
"jsonrpc": "2.0",
"method": "add",
"params": [1, 2],
"id": 1
}
jsonrpc
: 协议版本,固定为 "2.0"method
: 调用的方法名params
: 方法参数(数组或对象)id
: 标识本次请求(可用于匹配响应)
响应格式示例:
json
{
"jsonrpc": "2.0",
"result": 3,
"id": 1
}
如果发生错误,响应将包含 error
字段:
json
{
"jsonrpc": "2.0",
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 1
}
3. 传输方式
虽然 JSON-RPC 本身不依赖于任何传输协议,但常见实现使用:
- HTTP POST
- WebSocket
- TCP 直连
4. 适用场景
- 前后端通信
- 浏览器插件与宿主通信
- 轻量级服务之间的调用
5. Go 中使用 JSON-RPC
Go 提供 net/rpc/jsonrpc
标准包支持 JSON-RPC(基于 TCP):
go
import "net/rpc/jsonrpc"
也可以使用第三方库如 github.com/ybbus/jsonrpc
实现 HTTP 传输支持。
JSON-RPC 是一种轻量、易实现的远程调用协议,适用于需要快速集成和跨语言支持的场景。