code: func (conn *Conn) ping() {
  	defer conn.wg.Done()
  	tick := time.NewTicker(conn.cfg.PingFreq)
  	for {
  		select {
  		case <-tick.C:
  			conn.Ping(fmt.Sprintf("%d", time.Now().UnixNano()))
  		case <-conn.die:
  			// control channel closed, bail out
  			tick.Stop()
  			return
  		}
  	}
  }
docs: // ping is started as a goroutine after a connection is established, as
  // long as Config.PingFreq >0. It pings the server every PingFreq seconds.