title: MQTT: mosquitto disconnection
body: <p>I am using mosquitto broker hosted on AWS. My client got connected to broker but after some time it got disconnected. It happens many times.</p>
  
  <p>I am passing QOS=2, retain = true, clean session =false, no username and password, lwt =none , port= 1883, ip = server hosted on aws, client id = timeStamp(always unique)</p>
  
  <p>here is my code--</p>
  
  <pre><code>import time
  import paho.mqtt.client as mqtt
  
  class MqttCommunication(object):
  
      def __init__(self):
  
          self.current_module = "Mqtt Communication class"
          self.clientID = clientId
          self.name = thread_name
  
          self.DEBUG = True
          self.MQTT_HOST = ""
          self.MQTT_PORT = 1883
          self.MQTT_USERNAME = ""
          self.MQTT_PASSWORD = ""
          self.MQTT_CLIENT_ID = self.clientID
          self.MQTT_TOPIC = ""
          self.MQTT_QOS = 0
          self.MQTT_RETAIN = None
          self.MQTT_CLEAN_SESSION = None
          self.MQTT_LWT = ""
  
          self.client = mqtt.Client(self.MQTT_CLIENT_ID,clean_session=self.MQTT_CLEAN_SESSION)
          self.on_connect = None
          self.on_disconnect = None
          self.on_message = None
          self.on_subscribe = None
          self.on_unsubscribe = None
          self.on_publish = None
          self.client.on_connect = self.mqtt_on_connect
          #self.client.on_message = self.mqtt_on_message
          self.client.on_disconnect = self.mqtt_on_disconnect
          self.client.on_subscribe = self.mqtt_on_subscribe
          self.client.on_unsubscribe = self.mqtt_on_unsubscribe
          self.client.on_publish = self.mqtt_on_publish
  
  
  
      def connectHost(self,mqtt_host,mqtt_port,mqtt_username,mqtt_password):
          self.MQTT_USERNAME = mqtt_username
          self.MQTT_PASSWORD = mqtt_password
          self.MQTT_HOST = mqtt_host
          self.MQTT_PORT = mqtt_port
  
          try:
              self.client.username_pw_set(self.MQTT_USERNAME, self.MQTT_PASSWORD)
              self.client.connect(self.MQTT_HOST,self.MQTT_PORT,60)
              print self.MQTT_HOST
              self.client.loop_start()
  
          except Exception, e:
              print "Error connecting to %s:%d: %s" % (mqtt_host, mqtt_port, str(e))
  
          return True
  
      def disconnectHost(self):
          self.client.disconnect()
          return True
  
      def mqttSettings(self,qos,mqtt_retain,mqtt_clean_session,mqtt_lwt):
          self.MQTT_QOS = qos
          self.MQTT_RETAIN = mqtt_retain
          self.MQTT_CLEAN_SESSION = mqtt_clean_session
          self.MQTT_LWT = mqtt_lwt
          return True
  
      def subscribeTopic(self,topic):
          self.MQTT_TOPIC = topic
          self.client.subscribe(self.MQTT_TOPIC, qos=self.MQTT_QOS)
          return True
  
      def unsubscribeTopic(self,topic):
          self.client.unsubscribe(self.MQTT_TOPIC)
          return True
  
      def setClientId(self,clientID):
          self.MQTT_CLIENT_ID= clientID
          return True
  
      def getClientId(self):
          return self.MQTT_CLIENT_ID
  
      def publishData(self,topic,message,qos):
          self.client.publish(topic,message,qos)
          return True
  
  
      # The callback for when the client receives a CONNACK response from the server.
      def mqtt_on_connect(self,client, userdata, flags, rc):
          if rc == 0:
              print "Connected to %s:%s" % (self.MQTT_HOST, self.MQTT_PORT)
              time.sleep(3)
  
          elif rc == 1:
              print "Connection refused - unacceptable protocol version"
          elif rc == 2:
              print "Connection refused - identifier rejected"
          elif rc == 3:
              print "Connection refused - server unavailable"
          elif rc == 4:
              print "Connection refused - bad user name or password"
          elif rc == 5:
              print "Connection refused - not authorised"
          else:
              print "Connection failed - result code %d" % (rc)
  
  
  
      # The callback for when a PUBLISH message is received from the server.
      def mqtt_on_message(self , client, userdata, msg):
          #print msg
          print(msg.topic+" : "+str(msg.payload))
  
      def mqtt_on_disconnect(self, client, userdata, rc):
          if rc != 0:
              print("Unexpected disconnection.")
          else:
              print('hello from disconnect')
  
      def mqtt_on_publish(self, client, userdata, mid):
          """
          What to do when a message is published
          """
          #print "publish"
  
  
      def mqtt_on_subscribe(self,client, userdata, mid, granted_qos):
          """
          What to do in the event of subscribing to a topic"
          """
          #logging.debug("Subscribe with mid " + str(mid) + " received.")
  
  
      def mqtt_on_unsubscribe(self, client, userdata, mid):
          """
          What to do in the event of unsubscribing from a topic
          """
          #logging.debug("Unsubscribe with mid " + str(mid) + " received.")
  </code></pre>
  
  <p>sharing some logs---</p>
  
  <pre><code>1483617475: New connection from xx.xx.xx.xx on port 1883.
  1483617475: New client connected from xx.xx.xx.xx as mqttjs_bd875699 (c1, k10$
  1483617718: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.
  1483618131: Client 2017-01-05 17:27:18.963994 has exceeded timeout, disconnecti$
  1483618131: Socket error on client 2017-01-05 17:27:18.963994, disconnecting.
  1483618810: Socket error on client mqttjs_bd875699, disconnecting.
  1483618854: New connection from xx.xx.xx.xx on port 1883.
  1483618854: New client connected from xx.xx.xx.xx as mqttjs_7aa97fd9 (c1, k10$
  1483618865: Socket error on client mqttjs_7aa97fd9, disconnecting.
  1483618866: New connection from xx.xx.xx.xx on port 1883.
  1483618866: New client connected from xx.xx.xx.xx as mqttjs_25e2f297 (c1, k10$
  1483618886: New connection from xx.xx.xx.xx on port 1883.
  1483618886: New client connected from xx.xx.xx.xx as 2017-01-05 17:51:23.51980$
  1483619018: Socket error on client mqttjs_25e2f297, disconnecting.
  1483619019: New connection from xx.xx.xx.xx on port 1883.
  1483619019: New client connected from xx.xx.xx.xx as mqttjs_1c8ec6dd (c1, k10$
  1483619023: Socket error on client mqttjs_1c8ec6dd, disconnecting.
  1483619024: New connection from xx.xx.xx.xx on port 1883.
  </code></pre>