Start Server
Echo provides following Echo.Start(address string) convenience method to start the server. Which uses the default configuration for graceful shutdown.
HTTP Server
Echo.Start is convenience method that starts http server with Echo serving requests.
func main() {
e := echo.New()
// add middleware and routes
// ...
if err := e.Start(":1323"); err != nil {
e.Logger.Error("failed to start server", "error", err)
}
}
same functionality using server configuration echo.StartConfig
func main() {
e := echo.New()
// add middleware and routes
// ...
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) // start shutdown process on signal
defer cancel()
sc := echo.StartConfig{
Address: ":1323",
GracefulTimeout: 5 * time.Second, // defaults to 10 seconds
}
if err := sc.Start(ctx, e); err != nil {
e.Logger.Error("failed to start server", "error", err)
}
}
Following is server using http.Server
func main() {
e := echo.New()
// add middleware and routes
// ...
s := http.Server{
Addr: ":8080",
Handler: e,
//ReadTimeout: 30 * time.Second, // customize http.Server timeouts
}
if err := s.ListenAndServe(); err != http.ErrServerClosed {
e.Logger.Error("failed to start server", "error", err)
}
}
HTTPS Server
Echo.StartTLS is convenience method that starts HTTPS server with Echo serving requests on given address and uses
server.crt and server.key as TLS certificate pair.
func main() {
e := echo.New()
// add middleware and routes
// ...
sc := echo.StartConfig{Address: ":1323"}
if err := sc.StartTLS(context.Background(), e, "server.crt", "server.key"); err != nil {
e.Logger.Error("failed to start server", "error", err)
}
}
Following is equivalent to Echo.StartTLS previous example
func main() {
e := echo.New()
// add middleware and routes
// ...
s := http.Server{
Addr: ":8443",
Handler: e, // set Echo as handler
TLSConfig: &tls.Config{
//MinVersion: 1, // customize TLS configuration
},
//ReadTimeout: 30 * time.Second, // use custom timeouts
}
if err := s.ListenAndServeTLS("server.crt", "server.key"); err != http.ErrServerClosed {
log.Fatal(err)
}
}
Auto TLS Server with Let’s Encrypt
See Auto TLS Recipe
HTTP/2 Cleartext Server (HTTP2 over HTTP)
Echo.StartH2CServer is convenience method that starts a custom HTTP/2 cleartext server on given address
func main() {
e := echo.New()
// add middleware and routes
// ...
h2s := &http2.Server{
MaxConcurrentStreams: 250,
MaxReadFrameSize: 1048576,
IdleTimeout: 10 * time.Second,
}
h2Handler := h2c.NewHandler(e, h2s)
sc := echo.StartConfig{Address: ":1323"}
if err := sc.Start(context.Background(), h2Handler); err != nil {
e.Logger.Error("failed to start server", "error", err)
}
}
Following is equivalent to Echo.StartH2CServer previous example
func main() {
e := echo.New()
// add middleware and routes
// ...
h2s := &http2.Server{
MaxConcurrentStreams: 250,
MaxReadFrameSize: 1048576,
IdleTimeout: 10 * time.Second,
}
s := http.Server{
Addr: ":8080",
Handler: h2c.NewHandler(e, h2s),
}
if err := s.ListenAndServe(); err != http.ErrServerClosed {
log.Fatal(err)
}
}