我正在学习Go(Golang),并考虑到了一个项目。该项目将是一个Web应用程序,从第三方websocket中提取数据流。此时,我正在尝试让我的Go项目读取Web套接字数据,以便我可以解析它。
第三方websocket是JSON对象的数据流。
到目前为止,我已经能够成功收听websocket。但是,我对如何最好地解决这个问题感到困惑。也就是说,我在Websocket库上使用的读取方法正在获得一些字节。转变为JSON对象似乎具有挑战性。有没有更好的方法来读取websocket - 收集JSON对象?
目标
我的目标是收听这个公共Web套接字,获取json对象 - 我可以解析一个我想要的字段,然后将其拉入视图(使用数据流动态更新)。
如果没有,我如何将字节切片转换回JSON对象?
代码
这是我的代码:
package main
import (
"golang.org/x/net/websocket"
"fmt"
"log"
)
func main(){
origin := "http://localhost/"
url := "wss://ws-feed.gdax.com"
ws, err := websocket.Dial(url, "", origin)
if err != nil {
log.Fatal(err)
}
if _, err := ws.Write([]byte(`{"type":"subscribe", "product_ids":["LTC-USD"]}`)); err != nil {
log.Fatal(err)
}
var msg = make([]byte, 512)
var n int
for 1>0{
if n, err = ws.Read(msg); err != nil {
log.Fatal(err)
}
fmt.Printf("Received: %s.\n", msg[:n])
}
}
答案 0 :(得分:5)
首先,不要使用websocket.Read
和websocket.Write
来读取/写入websocket - 更好地使用方便websocket.Message
对象及其对应的websocket.Message.Receive()
和{ {1}}功能。它们都用于以UTF-8编码或字节序列发送字符串。
如果您希望在套接字上发送JSON对象,最好使用websocket.Message.Send()
而不是websocket.JSON.Receive()
。
按如下方式使用:
websocket.Message.Receive