mirror of
https://github.com/sourcegraph/jsonrpc2.git
synced 2026-06-16 04:04:56 +02:00
78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
package jsonrpc2_test
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net"
|
|
"os"
|
|
|
|
"github.com/sourcegraph/jsonrpc2"
|
|
)
|
|
|
|
// Send a JSON-RPC notification with its params member omitted.
|
|
func ExampleConn_Notify_paramsOmitted() {
|
|
ctx := context.Background()
|
|
|
|
connA, connB := net.Pipe()
|
|
defer connA.Close()
|
|
defer connB.Close()
|
|
|
|
rpcConn := jsonrpc2.NewConn(ctx, jsonrpc2.NewPlainObjectStream(connA), nil)
|
|
|
|
// Send the JSON-RPC notification.
|
|
go func() {
|
|
// Set params to nil.
|
|
if err := rpcConn.Notify(ctx, "foo", nil); err != nil {
|
|
fmt.Fprintln(os.Stderr, "notify:", err)
|
|
}
|
|
}()
|
|
|
|
// Read the raw JSON-RPC notification on connB.
|
|
//
|
|
// Reading the raw JSON-RPC request is for the purpose of this example only.
|
|
// Use a jsonrpc2.Handler to read parsed requests.
|
|
buf := make([]byte, 64)
|
|
n, err := connB.Read(buf)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "read:", err)
|
|
}
|
|
|
|
fmt.Printf("%s\n", buf[:n])
|
|
|
|
// Output: {"jsonrpc":"2.0","method":"foo"}
|
|
}
|
|
|
|
// Send a JSON-RPC notification with its params member set to null.
|
|
func ExampleConn_Notify_nullParams() {
|
|
ctx := context.Background()
|
|
|
|
connA, connB := net.Pipe()
|
|
defer connA.Close()
|
|
defer connB.Close()
|
|
|
|
rpcConn := jsonrpc2.NewConn(ctx, jsonrpc2.NewPlainObjectStream(connA), nil)
|
|
|
|
// Send the JSON-RPC notification.
|
|
go func() {
|
|
// Set params to the JSON null value.
|
|
params := json.RawMessage("null")
|
|
if err := rpcConn.Notify(ctx, "foo", params); err != nil {
|
|
fmt.Fprintln(os.Stderr, "notify:", err)
|
|
}
|
|
}()
|
|
|
|
// Read the raw JSON-RPC notification on connB.
|
|
//
|
|
// Reading the raw JSON-RPC request is for the purpose of this example only.
|
|
// Use a jsonrpc2.Handler to read parsed requests.
|
|
buf := make([]byte, 64)
|
|
n, err := connB.Read(buf)
|
|
if err != nil {
|
|
fmt.Fprintln(os.Stderr, "read:", err)
|
|
}
|
|
|
|
fmt.Printf("%s\n", buf[:n])
|
|
|
|
// Output: {"jsonrpc":"2.0","method":"foo","params":null}
|
|
}
|