Documentation
¶
Overview ¶
Package jsonrpc 实现简单的 JSON RPC 2.0
Index ¶
- Constants
- Variables
- type Conn
- type Error
- type HTTPConn
- type Server
- func (s *Server) Exists(method string) bool
- func (s *Server) NewConn(t Transport, errlog *log.Logger) *Conn
- func (s *Server) NewHTTPConn(url string, errlog *log.Logger) *HTTPConn
- func (s *Server) Register(method string, f interface{}) bool
- func (s *Server) RegisterBefore(f func(method string) error)
- func (s *Server) Registers(methods map[string]interface{})
- type Transport
Constants ¶
const ( CodeParseError = -32700 CodeInvalidRequest = -32600 CodeMethodNotFound = -32601 CodeInvalidParams = -32602 CodeInternalError = -32603 CodeServerErrorStart = -32099 CodeServerErrorEnd = -32000 CodeServerNotInitialized = -32002 CodeUnknownErrorCode = -32001 )
JSON RPC 2.0 定义的错误代码
const Version = "2.0"
Version JSON RPC 的版本
Variables ¶
var ( ErrInvalidHeader = errors.New("无效的报头格式") ErrInvalidContentType = errors.New("无效的报头 Content-Type") ErrMissContentLength = errors.New("缺少 Content-Length 报头") )
一些错误定义
Functions ¶
This section is empty.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn JSON RPC 连接对象
json-rpc 客户端和服务端是对等的,两者都使用 conn 初始化。
type Error ¶
type Error struct { // 错误代码 Code int `json:"code"` // 错误的简短描述 Message string `json:"message"` // 详细的错误描述信息,可以为空 Data interface{} `json:"data,omitempty"` }
Error JSON-RPC 返回的错误类型
func NewErrorWithData ¶
NewErrorWithData 新的 Error 对象
type HTTPConn ¶ added in v0.5.0
type HTTPConn struct {
// contains filtered or unexported fields
}
HTTPConn 表示 json rpc 的 HTTP 服务端中间件
type Server ¶ added in v0.5.0
type Server struct {
// contains filtered or unexported fields
}
Server JSON RPC 服务实例
func (*Server) NewConn ¶ added in v0.5.0
NewConn 创建长链接的 JSON RPC 实例
t 表示传输层的操作实例; errlog 表示在 serveHTTP 和 Serve 中部分不会中断执行的错误输出。 如果为空,则不会输出这些错误。
func (*Server) NewHTTPConn ¶ added in v0.5.0
NewHTTPConn 声明 HTTP 服务端中间件
url 表示主动请求时的 URL 地址,如果不需要,可以传递空值; errlog 表示错误日志输出通道,不需要可以为空。
func (*Server) Register ¶ added in v0.5.0
Register 注册一个新的服务
f 为处理服务的函数,其原型为以下方式:
func(notify bool, params, result pointer) error
其中 notify 表示是否为通知类型的请求;params 为用户请求的对象; result 为返回给用户的数据对象;error 则为处理出错是的返回值。 params 和 result 必须为指针类型。
返回值表示是否添加成功,在已经存在相同值时,会添加失败。
NOTE: 如果 f 的签名不正确,则会直接 panic
func (*Server) RegisterBefore ¶ added in v0.6.0
RegisterBefore 注册 Before 函数
f 的原型如下:
func(method string)(err error)
method RPC 服务名; 如果返回错误值,则会退出 RPC 调用,返回错误尽量采用 *Error 类型;
NOTE: 如果多次调用,仅最后次启作用。
type Transport ¶
type Transport interface { // 从转输层读取内容并转换成对象 v // // 如果返回的是 *Error 类型的错误,则直接将该错误信息反馈给客户端, // 如果是普通错误,则统一转换成 CodeParseError 传递给客户端。 Read(v interface{}) error // 将对象 v 写入传输层 // // 如果返回的是 *Error 类型的错误,则直接将该错误信息反馈给客户端, // 如果是普通错误,则错误代码不确定。 Write(v interface{}) error Close() error }
Transport 用于操作 JSON RPC 的传输层接口
func NewStreamTransport ¶ added in v0.6.0
NewStreamTransport 返回基于流的 Transport 实例
header 是否需要解析报头内容; close 指定了关闭 in 和 out 的函数,如果不需要关闭,则可以传递 nil 值。
func NewWebsocketTransport ¶
NewWebsocketTransport 声明基于 websocket 的 Transport 实例