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 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)