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