dsg56465 2019-04-19 11:17
浏览 337

Websocket上的客户端JSON-RPC2.0所需的Golang库(或代码)

I have to add

  1. JSON-RPC2.0
  2. over websockets, to my
  3. Golang
  4. 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

A stackoverflow question that dials tcp.

This dials TCP

net.rpc not 2.0, dials tcp

over http net/rpc and http

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.

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 keil的map文件中Image component sizes各项意思
    • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
    • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
    • ¥15 划分vlan后,链路不通了?
    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 Centos / PETGEM
    • ¥15 划分vlan后不通了
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)