Categorygithub.com/issue9/jsonrpc
modulepackage
0.12.3
Repository: https://github.com/issue9/jsonrpc.git
Documentation: pkg.go.dev

# README

jsonrpc Go codecov license PkgGoDev

JSON RPC 2.0 的实现,目前实现了对以下传输层的接口:

  • socket, net 包中所有支持 Conn 接口的实现;
  • websocket, 采用了 github.com/gorilla/websocket 作为底层调用;
  • HTTP 普通的 HTTP 请求方式;

目前不支持批处理模式!

Socket

srv := NewServer()
listen, err := net.Listen("tcp", ":8080")
for {
    c, err := listen.Accept()
    conn := srv.NewConn(NewSocketTransport(true, c), nil)
    conn.Serve(ctx)

    // 主动请求客户端
    conn.Send("/method", in, func(result *result) error {
        // 此处用于处理返回的数据
    })
}

HTTP

srv := NewServer()
conn := srv.NewHTTPConn(nil)
http.Handle(conn)

安装

go get github.com/issue9/jsonrpc

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

# Functions

NewError 新的 Error 对象.
NewErrorWithData 新的 Error 对象.
NewErrorWithError 从 err 构建一个新的 Error 实例 如果 err 本身就是 *Error 实例,则会直接返回该对象。.
NewServer 新的 [Server] 实例.
NewSocketTransport 声明基于 net.Conn 的 Transport 实例 HTTP、UDP 和 websocket 有专门的实现方法。 timeout 可以使读取数据时拥有超过的功能。 Conn.Serve() 通过 context.WithCancel 中断当前的服务,但是该功能可能由于 net.Conn.Read() 方法阻塞而无法真正中断服务,timeout 指定了 net.Conn.Read() 方法在无法读取数据是的超时时间。.
NewStreamTransport 返回基于流的 Transport 实例 header 是否需要解析报头内容; close 指定了关闭 in 和 out 的函数,如果不需要关闭,则可以传递 nil 值。.
NewUDPClientTransport 声明用于客户的 UDP Transport 接口 这是对 [NewUDPTransport] 的二次封装,返回适用于客户端的接口实例, 其中的 conn 参数由 [net.DialUDP] 创建,而 connected 统一为 true。 raddr 用于指定服务端地址;laddr 用于指定本地地址,可以为空值。 timeout 指定了 udp 在无法读取数据时的超时时间。.
NewUDPServerTransport 声明用于服务的 UDP Transport 接口 这是对 [NewUDPTransport] 的二次封装,返回适用于服务端的接口实例, 其中的 conn 参数由 [net.ListenUDP] 创建,而 connected 统一为 false。 timeout 指定了 udp 在无法读取数据时的超时时间。.
NewUDPTransport 创建 UDP 传输层 UDP 作为服务端是无状态的,在客户端发送一次请求之后,才能发送信息给客户端, 且之后如果有新的客户端请求过来,则发送的目标不地址也会变化。在多客户端环境中, 服务端如果有下发数据的行为,接收方是无法保证的。 header 表示是否需要输出报头内容目前报头包含了长度和编码两个字段, 如果不包含报头,则是一段合法的 JSON 内容。 connected 表示 conn 是否是有状态的,如果是调用 [net.ListenUDP] 生成的实例,是无状态的; [net.DialUDP] 返回的则是有状态的连接。 timeout 指定了 udp 在无法读取数据时的超时时间。.
NewWebsocketTransport 声明基于 websocket 的 Transport 实例.

# Constants

JSON RPC 2.0 定义的错误代码.
JSON RPC 2.0 定义的错误代码.
JSON RPC 2.0 定义的错误代码.
JSON RPC 2.0 定义的错误代码.
JSON RPC 2.0 定义的错误代码.
Version JSON RPC 的版本.

# Structs

Conn JSON RPC 连接对象 json-rpc 客户端和服务端是对等的,两者都使用 conn 初始化。 如果需要使用 HTTP 的通讯模式,请使用 HTTPConn 对象。.
Error JSON-RPC 返回的错误类型.
HTTPConn 表示 json rpc 的 HTTP 服务端中间件.
ID 用于表示唯一的请求 ID,可以是数值,字符串.
Server JSON RPC 服务实例.

# Interfaces

Transport 用于操作 JSON RPC 的传输层接口 传输层主要包括了对客户端数据的读写操作。.