Golang Gorilla mux如何处理不同的端口?

时间:2019-04-08 05:55:40

标签: go

我尝试在不同的端口中将内部使用和外部使用的API分开。

例如,端口80中为外部,端口5487中为内部。

我使用 github.com/gorilla/mux 进行网址路由。

我尝试创建两条不同的路线

func main() {

    internal := mux.NewRouter()
    external := mux.NewRouter()

    internal.HandleFunc("/foo", logging(foo))
    internal.HandleFunc("/bar", logging(bar))

    external.HandleFunc("/monitor", monitor())

    http.ListenAndServe(":80", internal)
    http.ListenAndServe(":8080", external)
}

但是事实证明,第二个服务器是无法访问的代码。

那么如何在go中创建两个不同的端口?

谢谢

2 个答案:

答案 0 :(得分:4)

使用goroutine。

    package main

    import (
        "net/http"

        "github.com/gorilla/mux"
    )

    func main() {

        internal := mux.NewRouter()
        external := mux.NewRouter()

        internal.HandleFunc("/foo", logging(foo))
        internal.HandleFunc("/bar", logging(bar))

        external.HandleFunc("/monitor", monitor())

        go http.ListenAndServe(":80", internal)

        go http.ListenAndServe(":8080", external)

        select{} // block forever to prevent exiting
    }

答案 1 :(得分:0)

尝试go routines:)

  

同意,向waitlisten添加一个channel,它将继续无限听

infinite_wait := make(chan string)

go func(){
    http.ListenAndServe(":80", internal)
}()

go func(){
    http.ListenAndServe(":8080", external)
}() 

<-infinite_wait