使用Pure Lua库建立MQTT SSL连接遇nil方法调用错误求助
解决Pure Lua MQTT Library SSL连接报错问题
你遇到的attempt to call a nil value (method 'ssl')错误,是因为这个库的client对象并没有单独的ssl()方法,正确的做法是将SSL配置直接整合到客户端初始化或连接参数中。
正确配置示例
方式1:初始化客户端时传入SSL参数
local client = mqtt.client{ uri = "localhost", port = 8883, -- Mosquitto默认SSL监听端口 username = "test", password = "test1", ssl = { mode = "client", protocol = "tlsv1_2", options = "all", key = "/绝对路径/到/你的私钥文件.key", certificate = "/绝对路径/到/你的证书文件.crt" } } client:connect()
方式2:连接时传入SSL参数
local client = mqtt.client{ uri = "localhost", port = 8883, username = "test", password = "test1", } client:connect{ ssl = { mode = "client", protocol = "tlsv1_2", options = "all", key = "/绝对路径/到/你的私钥文件.key", certificate = "/绝对路径/到/你的证书文件.crt" } }
额外注意事项
- 确认Mosquitto Broker已开启SSL监听,配置文件中需包含
listener 8883及证书相关配置 - 证书和私钥路径建议用绝对路径,避免相对路径导致的读取权限问题
- 确保luasec模块已正确安装且被Lua环境识别
内容的提问来源于stack exchange,提问作者Timooo
相关产品推荐
相关产品推荐

