Files
go-mqtt/main.go
2024-08-21 15:32:05 +08:00

104 lines
2.0 KiB
Go

package main
import (
"log"
"os"
"os/signal"
"syscall"
"testmqtt/config"
"testmqtt/mqtt"
)
func main() {
sigs := make(chan os.Signal, 1)
done := make(chan bool, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-sigs
done <- true
}()
configBytes, err := os.ReadFile("config.yaml")
if err != nil {
log.Fatal(err)
}
options, err := config.FromBytes(configBytes)
if err != nil {
log.Fatal(err)
}
server := mqtt.New(options)
go func() {
err := server.Serve()
if err != nil {
log.Fatal(err)
}
}()
<-done
server.Log.Warn("caught signal, stopping...")
_ = server.Close()
server.Log.Info("main.go finished")
//tcpAddr := flag.String("tcp", ":1883", "network address for TCP listener")
//wsAddr := flag.String("ws", ":1882", "network address for Websocket listener")
//infoAddr := flag.String("info", ":8080", "network address for web info dashboard listener")
//flag.Parse()
//
//sigs := make(chan os.Signal, 1)
//done := make(chan bool, 1)
//signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
//go func() {
// <-sigs
// done <- true
//}()
//
//server := mqtt.New(nil)
//_ = server.AddHook(new(auth.AllowHook), nil)
//
//tcp := listeners.NewTCP(listeners.Config{
// ID: "t1",
// Address: *tcpAddr,
//})
//err := server.AddListener(tcp)
//if err != nil {
// log.Fatal(err)
//}
//
//ws := listeners.NewWebsocket(listeners.Config{
// ID: "ws1",
// Address: *wsAddr,
//})
//err = server.AddListener(ws)
//if err != nil {
// log.Fatal(err)
//}
//
//stats := listeners.NewHTTPStats(
// listeners.Config{
// ID: "info",
// Address: *infoAddr,
// },
// server.Info,
//)
//err = server.AddListener(stats)
//if err != nil {
// log.Fatal(err)
//}
//
//go func() {
// err := server.Serve()
// if err != nil {
// log.Fatal(err)
// }
//}()
//
//<-done
//server.Log.Warn("caught signal, stopping...")
//_ = server.Close()
//server.Log.Info("mochi mqtt shutdown complete")
}