Skip to content

Golang JSON-RPC 2.0 client package based on erikdubbelboer/fasthttp

License

Notifications You must be signed in to change notification settings

rb-go/go-jrpc2client

Repository files navigation

GoLang jrpc2client (early beta)

Website | Blog

license GoDoc Coverage Status Build Status Go Report Card

This is a json-rpc 2.0 client package for golang based on:

to get high perfomance

This package is still in development

Examples

Without custom logger settings

package main

import (
	"github.com/riftbit/jrpc2client"
)

type TestReply struct {
	LogID string `json:"log_id"`
}

func main() {
	client := jrpc2client.NewClient()

	client.SetBaseURL("http://127.0.0.1:65001")
	client.SetUserAgent("JsonRPC Test Client")
	client.SetBasicAuth("user", "password")

	dstT := &TestReply{}
	err := client.Call("/api", "demo.Test", TestArgs{ID: "TESTER_ID_1"}, dstT)
	if err != nil {
		panic(err)
	}
	println(dstT.LogID)
}

With custom logger settings

package main

import (
	"github.com/riftbit/jrpc2client"
)

type TestReply struct {
	LogID string `json:"log_id"`
}

func main() {
	logger := &logrus.Logger{
    		Out:       os.Stdout,
    		Formatter: &logrus.JSONFormatter{DisableTimestamp: false},
    		Level:     logrus.DebugLevel,
    }

    client := jrpc2client.NewClientWithLogger(logger)

    client.SetBaseURL("http://127.0.0.1:65001")
    client.SetUserAgent("JsonRPC Test Client")
    client.SetBasicAuth("user", "password")

    dstT := &TestReply{}
    err := client.Call("/api", "demo.Test", TestArgs{ID: "TESTER_ID_3"}, dstT)
    if err != nil {
    		panic(err)
    }
    println(dstT.LogID)
}

Benchmark results