Very long waiting period when connection is impossible
vvzvlad opened this issue · comments
vvzvlad commented
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.
Vas Soshnikov commented
Hi,
It's good idea, thank you! It will be implemented, but I'm not sure about ETA.