4

我正在研究 esp8266 并尝试连接到 test.mosquitto.org。这是我从网上得到的

m = mqtt.Client("clientid", 60, "user", "password")
m:on("connect", function(con) print ("connected") end)
m:on("offline", function(con) print ("offline") end)
m:on("message", function(conn, topic, data) 
  print(topic .. ":" ) 
  if data ~= nil then
    print(data)
  end
end)

m:connect("http://test.mosquitto.org/", 1883, 0, function(conn) print("connected") end)
m:subscribe("/topic",0, function(conn) print("subscribe success") end)
m:publish("/topic","hello",0,0, function(conn) print("sent") end)
m:close();

我不确定从哪里获得 clientId ,用户和通行证,

这是我得到的:DNS 重试 1!DNS重试2!DNS重试3!DNS重试4!域名解析失败!

4

3 回答 3

6

问题是连接字符串开头的http://和结尾的/

connect 命令只需要一个主机名而不是 URL,即使它需要你也想通过tcp://test.mosquitto.orgmqtt://test.mosquitto.org

...
m:connect("test.mosquitto.org", 1883, 0, function(conn) print("connected") end)
...

另外顺便说一句,您的主题不应以 / 开头,这只会在主题树的开头添加一个额外的不必要的 null。

于 2016-01-05T23:16:37.880 回答
3

尝试使用 IP 而不是名称:

m:connect("85.119.83.194", 1883, 0, function(conn) print("connected") end)

如果可行,则意味着您在解析网站名称时遇到问题(无论出于何种原因)。

于 2016-01-05T18:54:42.530 回答
0

重新提出原始问题:我在没有最后一个参数的情况下使用它

m = mqtt.Client(clientID, 60)

并且clientID是您想要的任何名称,以区别于其他客户(例如"Ankit")。

主题应该更能描述有效负载(例如"message"),而不是通用的/topic.

另请注意较早的答案,因为连接使用服务器的 IP(例如"85.119.83.194")或主机名(例如"test.mosquitto.org")。

高温高压

于 2016-01-06T12:08:19.267 回答