github.com/lei006/gmqtt-broker@v0.0.1/main.go (about) 1 package main 2 3 import ( 4 "os" 5 "os/signal" 6 7 "github.com/lei006/gmqtt-broker/broker" 8 "github.com/lei006/gmqtt-broker/logger" 9 "go.uber.org/zap" 10 ) 11 12 var log = logger.Get() 13 14 func main() { 15 config, err := broker.ConfigureConfig(os.Args[1:]) 16 if err != nil { 17 log.Fatal("configure broker config error", zap.Error(err)) 18 } 19 20 b, err := broker.NewBroker(config) 21 if err != nil { 22 log.Fatal("New Broker error: ", zap.Error(err)) 23 } 24 b.StartServer(":1883") 25 26 s := waitForSignal() 27 log.Info("signal received, broker closed.", zap.Any("signal", s)) 28 } 29 30 func waitForSignal() os.Signal { 31 signalChan := make(chan os.Signal, 1) 32 defer close(signalChan) 33 signal.Notify(signalChan, os.Kill, os.Interrupt) 34 s := <-signalChan 35 signal.Stop(signalChan) 36 return s 37 }