~/goga/3-23/main.goは、~/go_template/tests/server23.go のサーバのクライアントです。ここでは、このクライアントとサーバのみに限定した使いかたを、備忘録として記載しておきます。
基本的には、PrumeMobileの使い方と同じです。
https://github.com/TomoichiEbata/PruneMobile
重複する部分もありますが以下に記載します
先ずグローバルに以下の構造体とグローバル変数を書き込みます。 ちなみに、これは~/go_template/tests/server23.go のサーバ 専用です(他のサーバでは、バスや乗客のアイコンが出てきません)
// GetLoc GetLoc
type GetLoc struct {
	ID   int     `json:"id"`
	Lat  float64 `json:"lat"`
	Lng  float64 `json:"lng"`
	TYPE string  `json:"type"` // "USER","BUS","CONTROL
	//Address string  `json:"address"`
}
var addr = flag.String("addr", "0.0.0.0:8080", "http service address") // テスト
func main() {} には、何も記載しなくても良いです。
エージェント用スレッドに、全部以下の記載をします。エージェント単位毎に、作ります。通信はエージェント単位(goroutine単位)で発生しますが、100や1000くらいのエージェントなら問題なく動きます(多分10000でも大丈夫)。
で、書き方ですが、以下の透りにして下さい。
_ = websocket.Upgrader{} // use default options
	flag.Parse()
	log.SetFlags(0)
	u := url.URL{Scheme: "ws", Host: *addr, Path: "/echo2"}
	log.Printf("connecting to %s", u.String())
	c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
	if err != nil {
		log.Fatal("dial:", err)
	}
	defer c.Close()
以下のコードでオブジェクトを生成します
// PruneMobileの初期化
	// 豊洲
	gl := GetLoc{
		ID:   0,  // "0"としなければならない
		Lat:  35.65351932403455, // 初期の場所
		Lng:  139.7945379819961,
		TYPE: "PERSON",  // "PERSON","BUS","CENTER"のいずれかが選べる
	}
	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
	gl2 := new(GetLoc)
	err = c.ReadJSON(gl2)
	gl.ID = gl2.ID
このループを連続して回すことでオブジェクトを動かします。
	for i := 0; i < steps; i++ {
        // 座標を適当に動かして、gl.Lat, gl.Lng に代入する
		gl.Lat = person.present.lat
		gl.Lng = person.present.lon
		err = c.WriteJSON(gl)
		if err != nil {
			log.Println("write:", err)
		}
		gl2 := new(GetLoc)
		err = c.ReadJSON(gl2)
		time.Sleep(1 * time.Second) // 適当な待ち時間を置く
	}
とりあえず、以下のように入力すると、オブジェクトを消せます。
    gl.ID = gl2.ID
	gl.Lat = 999.9
	gl.Lng = 999.9
	err = c.WriteJSON(gl)
	err = c.ReadJSON(gl2)
$ go run server23.go

localhost:8080でブラウザを起動

$ go run main.go


~/go_template/tests/server23.go のサーバ は、アイコンのところだけコード変更しています。
		if (obj.id == 0) {
			if (obj.type == "PERSON"){
				var marker = new PruneCluster.Marker(obj.lat, obj.lng, {
					popup: "Bell 206 ",
					icon: L.icon({
						iconUrl: 'http://localhost:8080/static/person-icon.png', 
					})
				});
			}
			else if (obj.type == "BUS"){
				var marker = new PruneCluster.Marker(obj.lat, obj.lng, {
					popup: "Bell 206 ",
					icon: L.icon({
						iconUrl: 'http://localhost:8080/static/bus-icon.png', 
					})
				});
			}