golang mqtt publish and subscribe

Weiß jemand, wo ich bekommen kann, einige Beispiel-MQTT-client-Go (golang) - code, die beide veröffentlichen und abonnieren in eine Endlosschleife ?

Bin ich messaging mit Mosquitto-broker läuft auf MacOs.

In mehr detail...

  1. Bekommen eine Nachricht von dem Netzwerk (ein Thema)
  2. Berechnen etwas, was sich auf die Nachricht
  3. Senden Sie das Ergebnis der Berechnung zurück an das Netzwerk (Thema)

Hier ist der code, den ich verwende:

package main

import (
"fmt"
 MQTT "github.com/eclipse/paho.mqtt.golang"
"os"
"time"
)

var knt int

var f MQTT.MessageHandler = func(client MQTT.Client, msg MQTT.Message) 
{ 
   fmt.Printf("MSG: %s\n", msg.Payload())
   text:= fmt.Sprintf("this is result msg #%d!", knt)
   knt++
   token := client.Publish("nn/result", 0, false, text)
   token.Wait()
}

func main() {
   knt = 0

   opts := MQTT.NewClientOptions().AddBroker("tcp://localhost:1883")
   opts.SetClientID("mac-go")
   opts.SetDefaultPublishHandler(f)

   c := MQTT.NewClient(opts)
   if token := c.Connect(); token.Wait() && token.Error() != nil {
        panic(token.Error())
   }

  if token := c.Subscribe("nn/sensors", 0, nil); token.Wait() && 
     token.Error() != nil {
     fmt.Println(token.Error())
     os.Exit(1)
  }

  time.Sleep(3 * time.Second)
} //end of main

Ich sah durch die GoDocs für einige Tipp, wie man die verbindungen aufrechterhalten, aber nichts scheint passend. Ich kann sicherlich nicht zu einer unendlichen Schleife
über den 'abonnieren' aber das scheint mir ineffizient.

  • Fragen für die tutorials, es ist off-topic für Stack-Überlauf, zeig uns was du schon versucht hast und jemand wird Ihnen helfen, es zu beheben
  • Ok. Vielen Dank für das feedback. Ich habe eine Lösung gefunden... denke ich. Ich fügte hinzu, die Lösung der code der Frage. Es läuft in einer Testumgebung. Ich muss jetzt versuchen, es in einer realen Umgebung.
InformationsquelleAutor Phillip Neal | 2018-02-19
Schreibe einen Kommentar