jsonrpc - examples_test.go

package jsonrpc_test

import (
	"encoding/json"
	"fmt"
	"net"

	"vimagination.zapto.org/jsonrpc"
)

func Example() {
	server, client := net.Pipe()

	go jsonrpc.New(server, jsonrpc.HandlerFunc(func(method string, params json.RawMessage) (any, error) {
		if method == "welcome" {
			var name string

			if err := json.Unmarshal(params, &name); err != nil {
				return nil, err
			}

			return "Welcome, " + name, nil
		}

		return nil, fmt.Errorf("unknown method: %s", method)
	})).Handle()

	var response string

	if err := jsonrpc.NewClient(client).RequestValue("welcome", "User", &response); err != nil {
		fmt.Println("Error: ", err)
	} else {
		fmt.Println(response)
	}

	// Output: Welcome, User
}