Golang中Paho MQTT客户端使用问题求助

Golang中Paho MQTT客户端使用问题求助 大家好, 请原谅我的英语不太好。

我是 Go 编程的初学者。

我想安装对 MQTT 协议的支持(如 paho 文档中所述),但当我尝试输入命令:

go get github.com/eclipse/paho.mqtt.golang

它告诉我命令 go get 不再受支持。我尝试了 go install 命令和 @latest 后缀,但无法使其正常工作。我也尝试在 Go 程序中包含这一行:

import "github.com/eclipse/paho.mqtt.golang"

但没有成功。

请问有人能给我一些入门的建议吗?

你好,谢谢。


更多关于Golang中Paho MQTT客户端使用问题求助的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

非常感谢

Lorenzo

更多关于Golang中Paho MQTT客户端使用问题求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


它告诉我命令 go get 不再被支持。

消息是 “‘go get’ is no longer supported outside a module.” 吗?如果是,那么最后三个词 “outside a module” 就是你的线索。

有很多文章可以让你了解 Go 模块。但你需要做的要点大致如下:

cd <my-project>

# 初始化一个模块
go mod init <my-project-package-name>
# 例如  : go mod init github.com/myusername/myproject
# 或者甚至 : go mod init myproject

# 获取你的依赖项,它将被添加到 `go.mod` 中
go get github.com/eclipse/paho.mqtt.golang

之后,你就可以导入 github.com/eclipse/paho.mqtt.golang 了。

你好,

现在我已经尝试执行了你们建议的所有命令,并且根据在以下链接中找到的示例,编辑了一个简单的程序 “mypaho.go”:

如何通过 Paho 客户端在 Golang 中使用 MQTT

这篇文章介绍了如何在 Golang 项目中使用 paho.mqtt.golang 客户端库,并实现 MQTT 的连接、订阅和消息发布等功能。

我已经测试了它。但是我遇到了这个错误:

go test mypaho.go

mypaho.go:4:8: no required module provides package github.com/eclipse/paho.mqtt.golang: go.mod file not found in current directory or any parent directory; see 'go help modules'

我做错了什么吗?

你好,Lorenzo

在 Go 1.16 及以上版本中,go get 已不再用于安装包,改为使用 go install 或模块管理。以下是解决方案:

1. 初始化模块(如未初始化) 在项目目录中执行:

go mod init your-module-name

2. 添加依赖 直接编辑 go.mod 文件,添加:

require github.com/eclipse/paho.mqtt.golang v1.4.3

或执行:

go get github.com/eclipse/paho.mqtt.golang@latest

(注意:Go 1.16+ 中 go get 仅调整依赖,不安装二进制文件)

3. 下载依赖

go mod tidy

4. 基础使用示例

package main

import (
    "fmt"
    "time"
    mqtt "github.com/eclipse/paho.mqtt.golang"
)

var messageHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) {
    fmt.Printf("收到消息: %s 主题: %s\n", msg.Payload(), msg.Topic())
}

func main() {
    opts := mqtt.NewClientOptions()
    opts.AddBroker("tcp://broker.emqx.io:1883")
    opts.SetClientID("go-client-example")
    opts.SetDefaultPublishHandler(messageHandler)

    client := mqtt.NewClient(opts)
    if token := client.Connect(); token.Wait() && token.Error() != nil {
        panic(token.Error())
    }

    // 订阅主题
    if token := client.Subscribe("test/topic", 0, nil); token.Wait() && token.Error() != nil {
        fmt.Println(token.Error())
        return
    }

    // 发布消息
    token := client.Publish("test/topic", 0, false, "Hello from Go")
    token.Wait()

    time.Sleep(5 * time.Second)
    client.Disconnect(250)
}

5. 运行程序

go run main.go

确保 go.mod 文件包含正确的模块声明和依赖项。如果导入仍报错,请检查:

  • 执行 go mod download 下载所有依赖
  • 确认 IDE 已正确配置 Go 模块支持
  • 检查 GOPROXY 环境变量(可设置为 https://goproxy.cn,direct 加速国内下载)
回到顶部