tarantool / mqtt

Tarantool MQTT client

Home Page:tarantool.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Very long waiting period when connection is impossible

vvzvlad opened this issue · comments

If the server is not responding, but not refused connection, the library will wait a very long time.

Code:

mqtt=require('mqtt')
m=mqtt.new()
m:connect{host="mail.ru"}

The above code will wait a very long time to complete the last command.

I use a workaround to check availability:

   local conn = socket.tcp_connect(mqtt_host, mqtt_port, 2)
   if (conn ~= nil) then
      conn:close()
      mqtt_object = mqtt.new(mqtt_name, true)
      local mqtt_status, mqtt_err = mqtt_object:connect({host=mqtt_host, port=mqtt_port})
      ...
   else
      error('Connect to host '..mqtt_host..' failed')
   end

socket.tcp_connect will return nil if the port is unavailable after 2 seconds, thus anticipating a long wait.
It would be nice if the MQTT library allowed you to set a timeout after which the connection is considered unsuccessful.

Hi,

It's good idea, thank you! It will be implemented, but I'm not sure about ETA.