我正在学习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])
}
}
Run Code Online (Sandbox Code Playgroud)
首先,不要使用websocket.Read,并websocket.Write从/到WebSocket读/写-更好的使用便利性websocket.Message对象及其相应的websocket.Message.Receive()和websocket.Message.Send()功能.它们都用于以UTF-8编码或字节序列发送字符串.
如果您希望在套接字上发送JSON对象,最好使用websocket.JSON.Receive()而不是websocket.Message.Receive.
使用方法如下:
...
type Person struct {
Name string
Emails []string
}
func ReceivePerson(ws *websocket.Conn) {
var person Person
err := websocket.JSON.Receive(ws, &person)
if err != nil {
log.Fatal(err)
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |