I have to add
- JSON-RPC2.0
- over websockets, to my
- Golang
- Client process
to communicate with another server. Unfortunately, none of the requirements can be changed.
I have libs and example code that offer parts of the solution but I have been unable to put it all together.
I have looked at Ethereum (I cannot find a client example) Ethereum rpc
This one looked promising but I cannot make my client work.
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)
I tried with/without marshaling but I'm clutching at straws here.