Я должен добавить
- JSON-RPC2.0
- через сетку, на мой
- Golang
- Клиентский процесс
для связи с другим сервером. К сожалению, ни одно из требований не может быть изменено.
У меня есть библиотеки и примеры кода, которые предлагают части решения, но я не смог собрать все это вместе.
Я посмотрел на Ethereum (не могу найти пример клиента) Ethereum rpc
A stackoverflow вопрос , который набирает tcp.
Этот набирает TCP
net.rpc не 2.0, набирает tcp
через http net / rpc и http
Этот выглядел многообещающе, но я не могу заставить своего клиента работать.
type Params struct {
Name string `json:"name"`
}
func main() {
h := NewRPCHandler()
h.Register("some_handler", dummySuccessHandler)
ts := http.Server{Handler: h}
defer ts.Close()
conn, _, err := websocket.DefaultDialer.Dial("ws://127.0.0.1:8080/ws_rpc", nil)
if err != nil {
log.Printf("Error dialing %v", err)
}
client := jsonrpc.NewClient(conn.UnderlyingConn())
par := &Params{"newuser"}
req, err := json.Marshal(&par)
if err != nil {
log.Printf("Bad marshal %#v", err)
}
var resp Result
err = client.Call("some_handler", &req, &resp)
Я пробовал с / без маршалинга, но я цепляюсь за соломинку здесь.