我尝试在不同的端口中将内部使用和外部使用的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中创建两个不同的端口?
谢谢
答案 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
:)
同意,向
wait
和listen
添加一个channel
,它将继续无限听
infinite_wait := make(chan string)
go func(){
http.ListenAndServe(":80", internal)
}()
go func(){
http.ListenAndServe(":8080", external)
}()
<-infinite_wait