有谁知道我在哪里可以获得一些示例 MQTT 客户端 Go (golang) 代码,这些代码在无限循环中发布和订阅?

我正在与在 MacO 上运行的 Mosquitto 代理进行消息传递。

更详细...

  1. 从网络中获取消息(一个话题)
  2. 根据该消息计算一些东西
  3. 将计算结果发送回网络(主题)

这是我使用的代码:

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

我查看了 GoDocs 以获取有关如何保持连接打开的一些提示,但似乎没有任何相关内容。我当然可以做一个无限循环 通过“订阅”,但这似乎效率低下。