go - 我如何知道两台服务器何时准备好接收请求?

标签 go go-gin

我有两台服务器

router := createServer()
loginServer := createLoginServerMock()
servLogin := &http.Server{
    Addr:         ":9333",
    Handler:      loginServer,
}
testServer := &http.Server{
    Addr:         ":9444",
    Handler:      router,
}
loginServer.ListenAndServe()
testServer.ListenAndServe()

我想在它们创建后向它们发送请求?我怎样才能检测到这一点?

最佳答案

ListenAndServe 没有反馈机制来让您知道服务器何时准备就绪。您必须自己创建监听器并将其传递给 Server.Serve :

loginListener, err := net.Listen("tcp", ":9333")
if err != nil {
    // TODO: handle err
}

testListener, err := net.Listen("tcp", ":9444")
if err != nil {
    // TODO: handle err
}

// You may already start sending requests now. They will just wait until
// the servers call Accept on their respective listener (i.e. shortly after
// Serve is called).

servLogin := &http.Server{Handler: loginServer}
testServer := &http.Server{Handler: router}

go func() { log.Fatal(servLogin.Serve(loginListener)) }()
go func() { log.Fatal(testServer.Serve(testListener)) }()

关于go - 我如何知道两台服务器何时准备好接收请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413791/

相关文章:

go - 如何删除 GORM 中有关系的表?

go - 使用 Golang 的 Euler 项目 #22;每次返回不同的结果

范围超过结构 slice 时的 Golang 内存地址问题

c++ - 如何在golang中实现c++ template<T>

go - 无法更新具有一对多关联的模型

go - 如何使用 gin 作为服务器编写 prometheus 导出器指标

go - 在 Go 工具中忽略命令行参数

Golang exercise slice 如何处理大值

go - 无法从 Postman 中的 Get Url 获取对象 ID

rest - gin-gonic 无法分配请求的地址