go - 在 Go 中创建多个 http Server 实例不起作用
问题描述
我正在尝试在我的 go lang 应用程序中创建 2 个 HTTP 服务器,这就是我尝试实现它的方式:
package main
import (
"net/http"
)
func main() {
server := http.Server{
Addr: ":9000",
//Handler: http.HandleFunc("/", hello)
}
server.ListenAndServe()
server2 := http.Server{
Addr: ":8000",
//Handler: http.HandleFunc("/", hello)
}
server2.ListenAndServe()
}
我遇到的问题是当我去浏览器向http://localhost:9000/
它发出请求时,但是当我向浏览器发出请求时,http://localhost:8000/
我得到“无法访问站点”。为什么我不能在 Go 中创建 HTTP 服务器的实例?
解决方案
就像Tim Cooper所说ListenAndServe
的阻塞,所以第一个服务器启动,但随后没有进行第二个调用。解决此问题的一种简单方法是从server
自己的 goroutine 开始,例如
func main() {
server := http.Server{
Addr: ":9000",
//Handler: http.HandleFunc("/", hello)
}
go server.ListenAndServe()
server2 := http.Server{
Addr: ":8000",
//Handler: http.HandleFunc("/", hello)
}
server2.ListenAndServe()
}
推荐阅读
- python - 如何使用 Python 找到数据集中的最大百分比下降?(股市)
- html - 如果下拉数据离开屏幕,下拉切换应该出现
- java - Pyspark 列表到 Scala 序列
- c# - 如何在具有 xmlns 属性的 xml 中使用 xpath 获取特定的嵌套元素?
- javascript - 将 Puppeteer 与 Discord 机器人一起使用
- ios - 删除一个后重新定位其他 UIButton
- javascript - 我们如何使用 javascript 从 HTML 画布创建适当的矢量 SVG 文件?
- reactjs - 将容器组件嵌套在表示组件中是否被认为是一种不好的做法?
- javascript - 我如何在反应 js 的 nextjs 中访问 _app.js 文件中的上下文
- kentico - 无法使用导入工具包将文件导入页面