jsonrpc - examples_test.go
1 package jsonrpc_test
2
3 import (
4 "encoding/json"
5 "fmt"
6 "net"
7
8 "vimagination.zapto.org/jsonrpc"
9 )
10
11 func Example() {
12 server, client := net.Pipe()
13
14 go jsonrpc.New(server, jsonrpc.HandlerFunc(func(method string, params json.RawMessage) (any, error) {
15 if method == "welcome" {
16 var name string
17
18 if err := json.Unmarshal(params, &name); err != nil {
19 return nil, err
20 }
21
22 return "Welcome, " + name, nil
23 }
24
25 return nil, fmt.Errorf("unknown method: %s", method)
26 })).Handle()
27
28 var response string
29
30 if err := jsonrpc.NewClient(client).RequestValue("welcome", "User", &response); err != nil {
31 fmt.Println("Error: ", err)
32 } else {
33 fmt.Println(response)
34 }
35
36 // Output: Welcome, User
37 }
38