main.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "context"
  4. "dlt645-server/server"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/os/glog"
  7. "github.com/gogf/gf/os/gproc"
  8. "os"
  9. "sparrow-sdk/config"
  10. gatewayV2 "sparrow-sdk/v2"
  11. )
  12. func main() {
  13. ctx := context.Background()
  14. err := glog.SetLevelStr(g.Cfg().GetString("Server.RunMode"))
  15. if err != nil {
  16. panic(err)
  17. }
  18. gw := gatewayV2.NewGateway(&config.Config{
  19. SparrowServer: g.Cfg().GetString("Sparrow.Server"),
  20. ProductKey: g.Cfg().GetString("Sparrow.ProductKey"),
  21. Protocol: "mqtt",
  22. DeviceCode: g.Cfg().GetString("Sparrow.DeviceCode"),
  23. Version: "1.0.0",
  24. Debug: g.Cfg().GetBool("Sparrow.Debug"),
  25. })
  26. if _, err = gw.Register(); err != nil {
  27. panic(err)
  28. }
  29. if _, err = gw.Authentication(); err != nil {
  30. panic(err)
  31. }
  32. // 通用指令回调
  33. gw.SetReportCommandCallback(func(deviceCode, subId string) error {
  34. return nil
  35. })
  36. go gw.Connect()
  37. srv := server.NewServer(
  38. ctx,
  39. g.Cfg().GetString("Server.Addr"),
  40. g.Cfg().GetInt("Server.Port"),
  41. gw,
  42. )
  43. go func() {
  44. if err := srv.Start(); err != nil {
  45. panic(err)
  46. }
  47. }()
  48. gproc.AddSigHandlerShutdown(func(sig os.Signal) {
  49. gw.Close()
  50. srv.Stop()
  51. })
  52. gproc.Listen()
  53. }