比如我一个web服务 想监听多个端口 比如:80、8080、443
在Google搜索到的文章说用go ListenAndServe()...
这样的做法有什么问题吗?正确的做法是怎样的
有疑问加站长微信联系(非本文作者)

比如我一个web服务 想监听多个端口 比如:80、8080、443
在Google搜索到的文章说用go ListenAndServe()...
这样的做法有什么问题吗?正确的做法是怎样的
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
你可以使用一个
ServerMux
注册处理函数,然后在多个goroutine里用ListenAndServe
使用同一个ServeMux
监听多个端口。en, 其实我想这样做,是否有潜在的问题呢?
这是go官方推荐的做法
呃,看错帖子了。
你担心什么潜在的问题?
因为不太了解go,所以想问下是否会有潜在问题。 谢啦 我先按照这样写 看看会不会有问题。 感谢。
线程安全性是没有问题的,因为
func (mux *ServeMux) ServeHTTP(w ResponseWriter, r *Request)
本来就是在多goroutine环境下使用的。只要别在ListenAndServe
之后调用HandleFunc
等注册处理函数就可以。楼主的问题应该分为两方面: 一,单服务,多端口响应 按照前面大家所说,是没有问题的。rpc、http的注册,都是以单体方式驱动注册的服务。注册的时候,要用同一个服务实例注册。 二、服务的并发安全问题 注册服务确保同一对象,多协程的时候(rpc是用反射找到方法,然后通过关键字 go 驱动的方法的),要注意对数据的读写保护,避免崩溃。加个锁就好了。
servemux不能作为形参吗?