在 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 异常。

Golang 协程中的 MQTT 连接断开处理

原文地址: https://www.cveoy.top/t/topic/lDQI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录