我可以使用Go从一个web应用程序设置多端口吗?
正如我所知,我可以使用Golang运行简单的web服务器,只需使用我可以使用Go从一个web应用程序设置多端口吗?,go,Go,正如我所知,我可以使用Golang运行简单的web服务器,只需使用httppackage,如 http.ListenAndServe(PORT, nil) 其中端口是要侦听的TCP地址 我可以将端口用作一个应用程序的端口S,例如http.ListenAndServe(“:80,:8080”,nil) 可能我的问题很愚蠢,但“谁不问,他就得不到答案!” 谢谢你的进步 不,你不能 但是,您可以在不同端口上启动多个侦听器 go http.ListenAndServe(PORT, handlerA)
http
package,如
http.ListenAndServe(PORT, nil)
其中端口是要侦听的TCP地址
我可以将端口用作一个应用程序的端口S,例如http.ListenAndServe(“:80,:8080”,nil)
可能我的问题很愚蠢,但“谁不问,他就得不到答案!”
谢谢你的进步 不,你不能
但是,您可以在不同端口上启动多个侦听器
go http.ListenAndServe(PORT, handlerA)
http.ListenAndServe(PORT, handlerB)
下面是一个简单的工作示例:
package main
import (
"fmt"
"net/http"
)
func hello(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hello")
}
func world(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "world")
}
func main() {
serverMuxA := http.NewServeMux()
serverMuxA.HandleFunc("/hello", hello)
serverMuxB := http.NewServeMux()
serverMuxB.HandleFunc("/world", world)
go func() {
http.ListenAndServe("localhost:8081", serverMuxA)
}()
http.ListenAndServe("localhost:8082", serverMuxB)
}
只需尝试:
侦听tcp:地址:80,:8080中的冒号太多可能会更快。文档也很清楚,没有人提出你应该在Go之外使用端口转发的事实。为了记录在案,你可以在多个端口上监听JimB suggester,或者更好,启动你的应用程序的不同实例,那些监听不同端口的实例;然后在前端使用haproxy或nginx作为反向代理,并将路径发送到相关实例。go…
是否意味着我无法将两个处理程序合并为一个?也许可以在handlerA和handlerB上创建类似“包装器”的东西?我不明白你用go…
问什么。如果需要,您可以组合处理程序,这取决于您。您询问是否可以在多个端口上侦听,要做到这一点,您需要多个侦听器。go
这是goroutine,对吗?这意味着另一条“线”。如果正确的话,我怎样才能“倾听”handlerA在handlerB内的传入流量?是的,我不正确,请问,我的错误,对不起。我需要一个处理程序来处理多个端口;对你来说,自己试试这些会更容易。如果你不确定goroutine是什么,你真的需要从这里开始: