main.go 1.3 KB

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