Reputation: 309
I am using the gorilla websocket library for golang: http://www.gorillatoolkit.org/pkg/websocket
This is the code I am using to create the websocket connection:
conn, err := upgrader.Upgrade(w, r, nil)
Having an issue with sending JSON from golang to javascript. I can get it working but have to do what seem to be unnecessary steps. Here is the basics of the golang backend that does not work:
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)
When I use JSON.parse in javascript I get the following response:
var clientUpdate = JSON.parse(evt.data);
eyJDaHVua3NXcml0dGVuIjowLCJDaHVua3NSZWFkIjowLCJCeXRlc1dyaXR0ZW4iOjU0NDgxLCJCeXRlc1JlYWQiOjc4NzgyLCJEYXRhQnl0ZXNXcml0dGVuIjowLCJEYXRhQnl0ZXNSZWFkIjowLCJBY3RpdmVQZWVycyI6MCwiVG90YWxQZWVycyI6NDMsIlRvcnJlbnRIYXNoU3RyaW5nIjoiOWY5MTY1ZDlhMjgxYTliOGU3ODJjZDUxNzZiYmNjODI1NmZkMTg3MSJ9
I can get it working making the following changes:
conn.WriteJSON(string(b))
Then in javascript I actually parse the data TWICE.
var clientUpdate = JSON.parse(evt.data);
var clientUpdateJSON = JSON.parse(clientUpdate);
After that I can access the data correctly as a JSON object. Is there something I'm missing about sending JSON objects from golang to javascript over websockets?
Upvotes: 1
Views: 1310