我可以使用Go从一个web应用程序设置多端口吗?

我可以使用Go从一个web应用程序设置多端口吗?,go,Go,正如我所知,我可以使用Golang运行简单的web服务器,只需使用httppackage,如 http.ListenAndServe(PORT, nil) 其中端口是要侦听的TCP地址 我可以将端口用作一个应用程序的端口S,例如http.ListenAndServe(“:80,:8080”,nil) 可能我的问题很愚蠢,但“谁不问,他就得不到答案!” 谢谢你的进步 不,你不能 但是,您可以在不同端口上启动多个侦听器 go http.ListenAndServe(PORT, handlerA)

正如我所知,我可以使用Golang运行简单的web服务器,只需使用
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是什么,你真的需要从这里开始: