func (ji *JsonrpcInvoker) Invoke(ctx context.Context, invocation protocol.Invocation) protocol.Result {
	var result protocol.RPCResult
	inv := invocation.(*invocation_impl.RPCInvocation)
	url := ji.GetURL()
	req := ji.client.NewRequest(url, inv.MethodName(), inv.Arguments())
	ctxNew := context.WithValue(ctx, constant.DUBBOGO_CTX_KEY, map[string]string{
		"X-Proxy-ID": "dubbogo",
		"X-Services": url.Path,
		"X-Method":   inv.MethodName(),
	})
	result.Err = ji.client.Call(ctxNew, url, req, inv.Reply())
	if result.Err == nil {
		result.Rest = inv.Reply()
	}
	logger.Debugf("result.Err: %v, result.Rest: %v", result.Err, result.Rest)
	return &result
}
Invoke the JSON RPC invocation and return result.
package jsonrpc
import (
	"context"
)
import (
	"dubbo.apache.org/dubbo-go/v3/common"
	"dubbo.apache.org/dubbo-go/v3/common/constant"
	"dubbo.apache.org/dubbo-go/v3/common/logger"
	"dubbo.apache.org/dubbo-go/v3/protocol"
	invocation_impl "dubbo.apache.org/dubbo-go/v3/protocol/invocation"
)
type JsonrpcInvoker struct {
	protocol.BaseInvoker
	client *HTTPClient
}
func NewJsonrpcInvoker(url *common.URL, client *HTTPClient) *JsonrpcInvoker {
	return &JsonrpcInvoker{
		BaseInvoker: *protocol.NewBaseInvoker(url),
		client:      client,
	}
}