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
它告诉我命令
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加速国内下载)

