JSON-RPC 简介

1. 什么是 JSON-RPC

JSON-RPC 是一种基于 JSON 格式的远程过程调用(RPC)协议。它是一种轻量级、无状态的通信协议,支持双向通信,常用于客户端与服务端之间的数据交换。

特点:

  • 简单、易于实现
  • 使用 JSON 格式作为数据编码
  • 与 HTTP、WebSocket 等传输协议兼容

2. 消息结构

一个标准的 JSON-RPC 请求格式如下:

{
  "jsonrpc": "2.0",
  "method": "add",
  "params": [1, 2],
  "id": 1
}
  • jsonrpc: 协议版本,固定为 “2.0”
  • method: 调用的方法名
  • params: 方法参数(数组或对象)
  • id: 标识本次请求(可用于匹配响应)

响应格式示例:

{
  "jsonrpc": "2.0",
  "result": 3,
  "id": 1
}

如果发生错误,响应将包含 error 字段:

{
  "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):

import "net/rpc/jsonrpc"

也可以使用第三方库如 github.com/ybbus/jsonrpc 实现 HTTP 传输支持。


JSON-RPC 是一种轻量、易实现的远程调用协议,适用于需要快速集成和跨语言支持的场景。