Gin 使用示例(三十):运行多个服务器


示例代码(src/gin-demo/examples/multi_service.go):

package main
    
import (
    "log"
    "net/http"
    "time"
    
    "github.com/gin-gonic/gin"
    "golang.org/x/sync/errgroup"
)
    
var (
    g errgroup.Group
)
    
func router01() http.Handler {
    e := gin.New()
    e.Use(gin.Recovery())
    e.GET("/", func(c *gin.Context) {
        c.JSON(
            http.StatusOK,
            gin.H{
                "code":  http.StatusOK,
                "error": "Welcome server 01",
            },
        )
    })
    
    return e
}
    
func router02() http.Handler {
    e := gin.New()
    e.Use(gin.Recovery())
    e.GET("/", func(c *gin.Context) {
        c.JSON(
            http.StatusOK,
            gin.H{
                "code":  http.StatusOK,
                "error": "Welcome server 02",
            },
        )
    })
    
    return e
}
    
func main() {
    server01 := &http.Server{
        Addr:         ":8080",
        Handler:      router01(),
        ReadTimeout:  5 * time.Second,
        WriteTimeout: 10 * time.Second,
    }
    
    server02 := &http.Server{
        Addr:         ":8081",
        Handler:      router02(),
        ReadTimeout:  5 * time.Second,
        WriteTimeout: 10 * time.Second,
    }
    
    g.Go(func() error {
        return server01.ListenAndServe()
    })
    
    g.Go(func() error {
        return server02.ListenAndServe()
    })
    
    if err := g.Wait(); err != nil {
        log.Fatal(err)
    }
} 

运行上述代码,启动服务器:

-w773

然后在终端窗口通过 curl 进行测试:

-w575


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Gin 使用示例(二十九):重定向

>> 下一篇: Gin 使用示例(三十一):SecureJSON