diff --git a/contrib/codecs/rdwr/client.go b/contrib/codecs/rdwr/client.go index 4d035b7c8a361309296ec3b18e483364c09688e3..0cf77e5fb346bf786cbe8068e20c7b0ef671d10e 100644 --- a/contrib/codecs/rdwr/client.go +++ b/contrib/codecs/rdwr/client.go @@ -10,6 +10,7 @@ import ( "gfx.cafe/open/jrpc/pkg/clientutil" "gfx.cafe/open/jrpc/pkg/jjson" "gfx.cafe/open/jrpc/pkg/jsonrpc" + "github.com/go-faster/jx" ) type Client struct { @@ -65,17 +66,18 @@ func (c *Client) Mount(h jsonrpc.Middleware) { } func (c *Client) listen() error { - var msg json.RawMessage defer func() { _ = c.Close() }() - dec := json.NewDecoder(bufio.NewReader(c.rd)) + jd := jx.GetDecoder() + defer jx.PutDecoder(jd) + jd.Reset(c.rd) for { - err := dec.Decode(&msg) + msg, err := jd.RawAppend(nil) if err != nil { return err } - msgs, _ := jsonrpc.ParseMessage(msg) + msgs, _ := jsonrpc.ParseMessage(json.RawMessage(msg)) for i := range msgs { v := msgs[i] if v == nil {