JSON-RPC 是一个无状态且轻量级的远程过程调用协议(RPC)协议,它允许运行在基于socket,http等诸多不同消息传输环境的同一进程中。其使用JSON作为数据格式。
1. 请求对象
发送一个请求对象至服务端代表一个rpc调用,一个请求对象包含下列成员:
jsonrpc
指定JSON-RPC协议版本的字符串,必须准确写为“2.0”
method
包含所要调用方法名称的字符串,以rpc开头的方法名
params
调用方法所需要的结构化参数值,该成员参数可以被省略
id
已建立客户端的唯一标识id,值必须包含一个字符串、数值或NULL空值。如果不包含改成员则被认定为是一个通知。
2. 响应对象
当发起一个rpc调用时,除通知之外,服务端都必须回复响应。响应表示一个JSON对象,使用以下成员:
jsonrpc
指定JSON-RPC 协议版本的字符串,必须准确写为"2.0"
result
改成员在成功时必须包含
当调用方法引起错误时必须不包含该成员
服务端中的被调用方法决定了该成员的值。
error
该成员在失败是必须包含
当没有引起错误时必须不包含该成员
id
改成员必须包含
该成员必须于请求对象中的id成员值一致
来点干货:
session.send({
"jsonrpc": "2.0",
"id": "updateDebugSettings",
"method": "workspace/executeCommand",
"params": { "command": "vscode.java.updateDebugSettings", "arguments": [JSON.stringify(userSettings)] }
});