我正在使用goor的gorilla websocket库:http://www.gorillatoolkit.org/pkg/websocket
这是我用来创建websocket连接的代码:
conn, err := upgrader.Upgrade(w, r, nil)
从golang向javascript发送JSON时遇到问题。我可以让它工作,但必须做似乎不必要的步骤。以下是Golang后端的基础知识:
type clientDB struct{
ChunksWritten int64
ChunksRead int64
BytesWritten int64
BytesRead int64
DataBytesWritten int64
DataBytesRead int64
ActivePeers int
TotalPeers int
TorrentHashString string
}
fullClientDB := new(clientDB) //creating a new clientDB struct
b, err := json.Marshal(fullClientDB)
if err != nil {
fmt.Println(err)
return
}
conn.WriteJSON(b)
当我在javascript中使用JSON.parse时,我得到以下响应:
var clientUpdate = JSON.parse(evt.data);
eyJDaHVua3NXcml0dGVuIjowLCJDaHVua3NSZWFkIjowLCJCeXRlc1dyaXR0ZW4iOjU0NDgxLCJCeXRlc1JlYWQiOjc4NzgyLCJEYXRhQnl0ZXNXcml0dGVuIjowLCJEYXRhQnl0ZXNSZWFkIjowLCJBY3RpdmVQZWVycyI6MCwiVG90YWxQZWVycyI6NDMsIlRvcnJlbnRIYXNoU3RyaW5nIjoiOWY5MTY1ZDlhMjgxYTliOGU3ODJjZDUxNzZiYmNjODI1NmZkMTg3MSJ9
我可以让它正在进行以下更改:
conn.WriteJSON(string(b))
然后在javascript中我实际解析数据TWICE。
var clientUpdate = JSON.parse(evt.data);
var clientUpdateJSON = JSON.parse(clientUpdate);
之后,我可以作为JSON对象正确访问数据。我是否缺少一些关于通过websockets从golang发送JSON对象到javascript的东西?