golang内でredis経由でJSONを飛す時、golangから直接JavaScriptへJSONを飛す時の覚え書き

  1. golang内でredis経由でJSONを飛す時
    // パブリッシュ側
    
    type GetLoc struct {
        ID    int     `json:"id"`
        Lat   float64 `json:"lat"`
        Lng   float64 `json:"lng"`
        TYPE  string  `json:"type"` // "PERSON","BUS","CONTROL
        POPUP int     `json:"popup"`
        //Address string  `json:"address"`
    }
    
    		gl.TYPE = "BUS"
    		gl.Lat = 35.654543 + (rand.Float64()-0.5)*0.00001*20
    		gl.Lng = 139.795534 + (rand.Float64()-0.5)*0.00002*20
    		gl.ID = rand.Int() % 5
    
    		json_gl, _ := json.Marshal(gl)
    		r, err := redis.Int(conn.Do("PUBLISH", "channel_1", json_gl))
    
    // サブスクライブ側
    
    	for {
    		switch v := psc.Receive().(type) {
    		case redis.Message:
    			fmt.Printf("%s: message: %s\n", v.Channel, v.Data)
    
    			var gl GetLoc
    			_ = json.Unmarshal(v.Data, &gl)
    			fmt.Println(gl.ID)
  2. golangから直接JavaScriptへJSONを飛す時
    golangから (上記の続き)

    var gl GetLoc
    			_ = json.Unmarshal(v.Data, &gl)
    			fmt.Println(gl.ID)
    
    			//conn.WriteJSON(v.Data)
    			conn.WriteJSON(gl)

    JavaScriptで受けとる

    <script>
            function obj(id, lat, lng, type, popup){
                this.id = id;
                this.lat = lat;
                this.lng = lng;
                this.type = type;
                this.popup = popup;
            }
    
    
            //ws.onmessage = e => console.log(e.data)
            ws.onmessage = function(event) {  // 受信したメッセージはここに飛んでくる
                console.log("RESPONSE",event.data)
                var obj = JSON.parse(event.data);
                console.log("after parse:",obj.id)
            }

ポイントは、Marshal、Unmarshal、parseの使い方