Golang 协程中的 MQTT 连接断开处理
在 Go 语言中,可以使用 MQTT 库来连接 MQTT 服务器,并使用协程来处理消息。当主程序断开时,可以使用 defer 关键字来关闭 MQTT 连接。
示例代码如下:
import (
'github.com/eclipse/paho.mqtt.golang'
)
func main() {
// 连接 MQTT 服务器
opts := mqtt.NewClientOptions().AddBroker('tcp://localhost:1883')
client := mqtt.NewClient(opts)
if token := client.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
// 启动协程处理消息
go func() {
for {
// 处理消息
// ...
}
}()
// 在主程序退出时关闭 MQTT 连接
defer func() {
if token := client.Disconnect(250); token.Wait() && token.Error() != nil {
panic(token.Error())
}
}()
// 等待程序退出
// ...
}
在上面的代码中,使用 defer 关键字来关闭 MQTT 连接。当程序退出时,defer 语句会被执行,从而关闭 MQTT 连接。注意,使用 token.Wait() 来等待连接关闭完成。如果连接关闭失败,会抛出 panic 异常。
原文地址: https://www.cveoy.top/t/topic/lDQI 著作权归作者所有。请勿转载和采集!