Start Server

Echo provides following convenience methods to start the server:

  • Echo.Start(address string)
  • Echo.StartTLS(address string, certFile, keyFile interface{})
  • Echo.StartAutoTLS(address string)
  • Echo.StartH2CServer(address string, h2s *http2.Server)
  • Echo.StartServer(s *http.Server)

HTTP Server

Echo.Start is convenience method that starts http server with Echo serving requests.

  1. func main() {
  2. e := echo.New()
  3. // add middleware and routes
  4. // ...
  5. if err := e.Start(":8080"); err != http.ErrServerClosed {
  6. log.Fatal(err)
  7. }
  8. }

Following is equivalent to Echo.Start previous example

  1. func main() {
  2. e := echo.New()
  3. // add middleware and routes
  4. // ...
  5. s := http.Server{
  6. Addr: ":8080",
  7. Handler: e,
  8. //ReadTimeout: 30 * time.Second, // customize http.Server timeouts
  9. }
  10. if err := s.ListenAndServe(); err != http.ErrServerClosed {
  11. log.Fatal(err)
  12. }
  13. }

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.

  1. func main() {
  2. e := echo.New()
  3. // add middleware and routes
  4. // ...
  5. if err := e.StartTLS(":8443", "server.crt", "server.key"); err != http.ErrServerClosed {
  6. log.Fatal(err)
  7. }
  8. }

Following is equivalent to Echo.StartTLS previous example

  1. func main() {
  2. e := echo.New()
  3. // add middleware and routes
  4. // ...
  5. s := http.Server{
  6. Addr: ":8443",
  7. Handler: e, // set Echo as handler
  8. TLSConfig: &tls.Config{
  9. //MinVersion: 1, // customize TLS configuration
  10. },
  11. //ReadTimeout: 30 * time.Second, // use custom timeouts
  12. }
  13. if err := s.ListenAndServeTLS("server.crt", "server.key"); err != http.ErrServerClosed {
  14. log.Fatal(err)
  15. }
  16. }

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

  1. func main() {
  2. e := echo.New()
  3. // add middleware and routes
  4. // ...
  5. s := &http2.Server{
  6. MaxConcurrentStreams: 250,
  7. MaxReadFrameSize: 1048576,
  8. IdleTimeout: 10 * time.Second,
  9. }
  10. if err := e.StartH2CServer(":8080", s); err != http.ErrServerClosed {
  11. log.Fatal(err)
  12. }
  13. }

Following is equivalent to Echo.StartH2CServer previous example

  1. func main() {
  2. e := echo.New()
  3. // add middleware and routes
  4. // ...
  5. h2s := &http2.Server{
  6. MaxConcurrentStreams: 250,
  7. MaxReadFrameSize: 1048576,
  8. IdleTimeout: 10 * time.Second,
  9. }
  10. s := http.Server{
  11. Addr: ":8080",
  12. Handler: h2c.NewHandler(e, h2s),
  13. }
  14. if err := s.ListenAndServe(); err != http.ErrServerClosed {
  15. log.Fatal(err)
  16. }
  17. }