code: func NewEchoClient(serverAddr string) (*EchoClient, error) {
  	c := &EchoClient{
  		serverAddr: serverAddr,
  	}
  
  	c.conn = goetty.NewConnector(serverAddr,
  		goetty.WithClientConnectTimeout(time.Second*3),
  		goetty.WithClientDecoder(&StringDecoder{}),
  		goetty.WithClientEncoder(&StringEncoder{}),
  		// if you want to send heartbeat to server, you can set conf as below, otherwise not set
  		goetty.WithClientWriteTimeoutHandler(time.Second*3, c.writeHeartbeat, goetty.NewTimeoutWheel(goetty.WithTickInterval(time.Second))))
  	_, err := c.conn.Connect()
  
  	return c, err
  }
docs: // NewEchoClient new client