gpt4 book ai didi

linux - 如何同时运行多个 Go lang http 服务器并使用命令行测试它们?

转载 作者:数据小太阳 更新时间:2023-10-29 03:39:14 26 4
gpt4 key购买 nike

编辑:我的目标是同时运行多个 Go HTTP 服务器。在使用 Nginx 反向代理访问在多个端口上运行的 Go HTTP 服务器时,我遇到了一些问题。

最后,这是我用来运行多个服务器的代码。

package main

import (
"net/http"
"fmt"
"log"
)

func main() {

// Show on console the application stated
log.Println("Server started on: http://localhost:9000")
main_server := http.NewServeMux()

//Creating sub-domain
server1 := http.NewServeMux()
server1.HandleFunc("/", server1func)

server2 := http.NewServeMux()
server2.HandleFunc("/", server2func)

//Running First Server
go func() {
log.Println("Server started on: http://localhost:9001")
http.ListenAndServe("localhost:9001", server1)
}()

//Running Second Server
go func() {
log.Println("Server started on: http://localhost:9002")
http.ListenAndServe("localhost:9002", server2)
}()

//Running Main Server
http.ListenAndServe("localhost:9000", main_server)
}

func server1func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Running First Server")
}

func server2func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Running Second Server")
}

我犯的一些新手错误:

  1. ping http://localhost:9000 -- 如前所述,ping 用于主机而不是网址。使用 wget http://localhost:9000 代替。感谢其他人的更正。
  2. 在服务器上运行应用程序时结束 SSH session -- 一旦您关闭 session ,应用程序也会关闭。
  3. 使用 Ctrl + Z——如果您使用的是单一终端窗口并且您将使用 Ctrl + Z,它将暂停程序并且您将在访问服务器时遇到问题

我希望它能帮助像我这样的 Go 语言新手程序员。

最佳答案

经典 ping 不适用于测试 TCP 端口,仅适用于主机(参见 https://serverfault.com/questions/309357/ping-a-specific-port )。我已经看到许多框架提供了一个“ping”选项来测试服务器是否处于事件状态,这可能是错误的根源。

我喜欢用netcat:

$ nc localhost 8090 -vvv
nc: connectx to localhost port 8090 (tcp) failed: Connection refused

$ nc localhost 8888 -vvv
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif lo0
src ::1 port 64550
dst ::1 port 8888
rank info not available
TCP aux info available

Connection to localhost port 8888 [tcp/ddi-tcp-1] succeeded!

您可能必须使用 sudo yum install netcatsudo apt-get install netcat(分别针对基于 RPM 和 DEB 的发行版)进行安装。

关于linux - 如何同时运行多个 Go lang http 服务器并使用命令行测试它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40573837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com