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、user、pass をどこから取得すればよいかわかりません。

ここで私が得ているもの:DNSリトライ1!DNS リトライ 2! DNS リトライ 3! DNS リトライ 4! DNS 失敗!

4

3 に答える 3

6

問題は、接続文字列の先頭のhttp://と末尾の/です。

connect コマンドは、URL ではなくホスト名だけを必要とします。ホスト名が必要な場合でも、tcp://test.mosquitto.orgまたはmqtt://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)

それが機能する場合は、Web サイトの名前の解決に問題があることを意味します (何らかの理由で)。

于 2016-01-05T18:54:42.530 に答える
0

RE元の質問:私は最後の引数なしでそれを使用します

m = mqtt.Client(clientID, 60)

andclientIDは、他のクライアントと区別するための任意の名前です (例: "Ankit")。

トピックは"message"、一般的な/topic.

以前の回答にも注意してください。接続には、サーバーの IP (例: "85.119.83.194") またはホスト名 (例: "test.mosquitto.org") を使用します。

HTH

于 2016-01-06T12:08:19.267 に答える