は私がgolang、 によってMQTTサブクライアントを構築するためにpaho PKGをしようとしていますし、ブローカーの切断が、私はメッセージappearを失っすべきだと思うとき、私は私のクライアントに問題があるが、これは起こらない、と私は、ブローカを起動した場合、 mqttサブクライアントはmqtt pubクライアントから送信されたメッセージを取得できません。mqttブローカとの接続が失われているかどうかを確認する方法は?
なぜこれが起こり、どうすれば修正できるのでしょうか?
コード
package main
import (
"fmt"
"os"
mqtt "github.com/eclipse/paho.mqtt.golang"
)
var (
broker = "tcp://localhost:1883"
f mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) {
fmt.Printf("TOPIC: %s\n", msg.Topic())
fmt.Printf("MSG: %s\n", msg.Payload())
}
)
func main() {
//create a ClientOptions
opts := mqtt.NewClientOptions().AddBroker(broker)
opts.SetClientID("group-one")
opts.SetDefaultPublishHandler(f)
//create and start a client using the above ClientOptions
c := mqtt.NewClient(opts)
if token := c.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
if token := c.Subscribe("test", 0, nil); token.Wait() && token.Error() != nil {
fmt.Println(token.Error())
os.Exit(1)
}
for {
}
}
は答えてくれてありがとう、私は[OnConnectionLostHandler](https://github.com/eclipse/paho.mqtt.golang/blob/master/options.go#L100)だと思いますデフォルトで私は接続を失った私に通知する必要があります! –
デフォルトのハンドラはメッセージを出力するだけです(上記の例はメッセージを出力します...)。つまり、カスタム接続が失われたハンドラを割り当てると、メッセージを印刷するだけではなく、さまざまな処理を行うことができます。紛失した接続の数をカウントし、電子メールなどで通知を送信します。 – putu
'OnConnectionLostHandler'は接続を失った場合は何も表示しません。 –