package main import ( "fmt" "net/http" "os" "os/signal" "pro2d/cmd/gameserver/service" "pro2d/common" "pro2d/common/logger" "syscall" ) func main() { err := make(chan error) stopChan := make(chan os.Signal) signal.Notify(stopChan, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL) userChan := make(chan os.Signal) signal.Notify(userChan, syscall.SIGQUIT) common.GlobalSconf = common.GlobalConf.GameConf s, err1 := service.NewGameServer() if err1 != nil { logger.Error(err1) return } go func() { err <- http.ListenAndServe(fmt.Sprintf(":%d", common.GlobalSconf.DebugPort), nil) }() gm := service.NewGmServer(s, fmt.Sprintf(":%d", common.GlobalSconf.GMPort)) go func() { err <- gm.Start() }() go func() { err <- s.Start() }() for { select { case e := <-err: logger.Error("game server error: %v", e) return case <-stopChan: logger.Debug("game stop...") s.Stop() return case u := <-userChan: logger.Debug("userChan .. %v", u.String()) e := s.IServer.GetPlugin().LoadPlugin() if e != nil { logger.Error("err: ", e.Error()) } } } }