首页 > 解决方案 > 我如何知道两台服务器何时准备好接收请求?

问题描述

我有两台服务器

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

我想在他们创建后向他们发送请求?我怎样才能检测到呢?

标签: gogo-gin

解决方案


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)) }()

推荐阅读