如何通过Golang Gorilla mux处理不同的端口? [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我尝试在不同的端口中分离内部使用和外部使用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中创建两个不同的端口?

谢谢

go
2个回答
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
    }

0
投票

试试go routines :)

同意,对于waitlisten你可以添加一个channel,它将继续无限听

infinite_wait := make(chan string)

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

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

<-infinite_wait 
© www.soinside.com 2019 - 2024. All rights reserved.