登录
首页 >  Golang >  Go问答

go客户端在订阅失败时返回空值

来源:stackoverflow

时间:2024-03-03 16:09:22 454浏览 收藏

今天golang学习网给大家带来了《go客户端在订阅失败时返回空值》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

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

emq 服务器返回 reasoncode=128,go 客户端的 error 始终为 nil,无法获取 emq 服务器的子包。


正确答案


根据 alsm 对 paho.mqtt.golang 问题的评论,您 initially commented on

该库采用的方法是认为已处理的订阅请求(发送了 subscribe 并收到了 suback)为成功。如果您愿意,它可以让您选择检查对各个订阅的响应(但如果有 1 个请求失败,则不会引发错误响应)。正如 alsm 评论的那样,很可能有更好的方法(欢迎提出建议)。

您表示这对您不起作用,但没有在此处提供任何其他信息(根据要求),因此很难知道您遇到了什么困难。这是一种为您提供总体思路的方法(尚未编译/测试):

token := c.Subscribe("go-mqtt/sample", 0, nil)
if token.Wait() && token.Error() != nil {
    fmt.Println(token.Error()) 
    os.Exit(1)
} 
if t, ok := token.(*mqtt.SubscribeToken); ok {
    subResult = t.Result() 
    rc := subResult["go-mqtt/sample"]
    fmt.Println("SUBACK response: ", rc) 
} else {
    fmt.Println("unexpected token type") 
    os.Exit(1)
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>