fix(server): 解决服务器启动时端口占用错误处理问题
- 提取配置地址到变量以避免重复调用 - 添加端口被占用的具体错误提示 - 区分不同类型的启动错误并提供相应信息 - 在启动失败时添加程序退出机制确保服务正常终止main v1.0.1019
parent
abf5529019
commit
af31b688cf
|
|
@ -33,8 +33,9 @@ func New() *gin.Engine {
|
|||
// @Param *gin.Engine 路由实例
|
||||
// 设置监听挂壁
|
||||
func Run(g *gin.Engine) {
|
||||
addr := config.GetConfigValue("server.addr", ":8080").String()
|
||||
s := &http.Server{
|
||||
Addr: config.GetConfigValue("server.addr", ":8080").String(),
|
||||
Addr: addr,
|
||||
Handler: g,
|
||||
ReadTimeout: 60 * time.Second,
|
||||
ReadHeaderTimeout: 60 * time.Second,
|
||||
|
|
@ -44,8 +45,15 @@ func Run(g *gin.Engine) {
|
|||
}
|
||||
go func() {
|
||||
if err := s.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
// 检查是否是端口被占用的错误
|
||||
if strings.Contains(err.Error(), "address already in use") ||
|
||||
strings.Contains(err.Error(), "Only one usage of each socket address") {
|
||||
log.Error(fmt.Sprintf("服务器启动失败:%s 端口已被占用,请检查是否有其他程序正在使用该端口", addr))
|
||||
} else {
|
||||
log.Error("服务器启动失败:", err)
|
||||
}
|
||||
os.Exit(1) // 启动失败则退出程序
|
||||
}
|
||||
}()
|
||||
log.Info("服务器启动成功....")
|
||||
if strings.Contains(s.Addr, "127.0.0.1") || strings.Contains(s.Addr, "0.0.0.0") || strings.Contains(s.Addr, "locahost") {
|
||||
|
|
|
|||
Loading…
Reference in New Issue