В настоящее время у меня есть код Go, который подписывается на тему и распечатывает данные датчика. Часть, которая распечатывает данные датчика, находится в Goroutine , однако в настоящее время ничего не распечатывается. Это мой код:
package main
import (
"fmt"
MQTT "github.com/eclipse/paho.mqtt.golang"
"os"
"os/signal"
"syscall"
"sync"
)
var wg sync.WaitGroup
func subscriber(client MQTT.Client, message MQTT.Message) {
wg.Add(1)
go func() {
defer wg.Done()
fmt.Printf("%s\n", message.Payload())
}()
}
func main() {
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
opts := MQTT.NewClientOptions().AddBroker("tcp://test.mosquitto.org:1883")
//opts.SetDefaultPublishHandler(f)
// Topic to subscribe to for sensor data
topic := "sensor/data"
client := MQTT.NewClient(opts)
if token := client.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
} else {
fmt.Printf("Connected to server\n")
}
opts.OnConnect = func(c MQTT.Client) {
//if token := c.Subscribe(topic, 0, f); token.Wait() && token.Error() != nil {
if token := c.Subscribe(topic, 0, subscriber); token.Wait() && token.Error() != nil {
panic(token.Error())
}
}
wg.Wait()
<-c
}
Мне интересно, связано ли это с тем, как я кодировал sync.WaitGroup? Любые идеи приветствуются.