Skip to content

Very long waiting period when connection is impossible #30

Open
@vvzvlad

Description

@vvzvlad

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions