Example #1
0
func main() {
	var (
		port      int
		ch        chan bool = make(chan bool)
		logOutput bool
		conf      string
	)

	flag.IntVar(&port, "port", 14197, "")
	flag.StringVar(&conf, "conf", "app.conf", "")
	flag.BoolVar(&logOutput, "l", false, "log output")
	flag.Parse()

	log.SetOutput(os.Stdout)
	log.SetFlags(log.LstdFlags | log.Ltime | log.Ldate | log.Lshortfile)

	gof.CurrentApp = core.NewMainApp(conf)
	dps.Init(gof.CurrentApp)
	cache.Initialize(gof.CurrentApp.Storage())
	fix.CustomFix()

	ts := tcpserve.NewServe(logOutput)
	ts.RegisterJob(tcpserve.MemberSummaryNotifyJob) //注册会员信息通知
	ts.RegisterJob(tcpserve.AccountNotifyJob)       //注册账户通知任务
	go ts.Listen(fmt.Sprintf(":%d", port))          //启动服务

	// 检测退出信号
	go func(mainCh chan bool) {
		ch := make(chan os.Signal)
		signal.Notify(ch, syscall.SIGTERM, syscall.SIGKILL)
		for {
			switch <-ch {
			case syscall.SIGKILL, syscall.SIGTERM:
				log.Println("[ Tcp][ Term] - tcp serve has term!")
				close(mainCh)
			}
		}
	}(ch)
	log.Println("[ TCP][ SERVE] - socket is serve on port :", port)
	<-ch
}
Example #2
0
func main() {
	var (
		ch        chan bool = make(chan bool)
		confFile  string
		httpPort  int
		restPort  int
		debug     bool
		trace     bool
		runDaemon bool // 运行daemon
		help      bool
		newApp    *core.MainApp
	)

	flag.IntVar(&httpPort, "port", 14190, "web server port")
	flag.IntVar(&restPort, "restport", 14191, "rest api port")
	flag.BoolVar(&debug, "debug", false, "enable debug")
	flag.BoolVar(&trace, "trace", false, "enable trace")
	flag.BoolVar(&help, "help", false, "command usage")
	flag.StringVar(&confFile, "conf", "app.conf", "")
	flag.BoolVar(&runDaemon, "d", false, "run daemon")
	flag.Parse()

	if help {
		flag.Usage()
		return
	}

	log.SetOutput(os.Stdout)
	log.SetFlags(log.LstdFlags | log.Ltime | log.Ldate | log.Lshortfile)

	runtime.GOMAXPROCS(runtime.NumCPU())
	newApp = core.NewMainApp(confFile)
	if !newApp.Init(debug, trace) {
		os.Exit(1)
	}
	fix.CustomFix()
	go fix.SignalNotify(ch)

	if v := newApp.Config().GetInt("server_port"); v != 0 {
		httpPort = v
	}
	if v := newApp.Config().GetInt("api_service_port"); v != 0 {
		restPort = v
	}

	gof.CurrentApp = newApp
	dps.Init(newApp)
	cache.Initialize(storage.NewRedisStorage(newApp.Redis()))
	session.Set(newApp.Storage(), "")

	var booted bool

	if runDaemon {
		go daemon.Run(newApp)
	}

	go app.Run(ch, newApp, fmt.Sprintf(":%d", httpPort)) //运行HTTP

	go restapi.Run(newApp, restPort) // 运行REST API

	if booted {
		<-ch
	}

	os.Exit(1) // 退出
}