title: Connection lost (32109) - java.io.EOFException
body: <p>I used <a href="https://www.eclipse.org/paho/" rel="noreferrer">eclipse MQTT</a>  for connect to MQTT server.</p>
  
  <p>I can connect to server successfully but when i publish message , i got this error </p>
  
  <blockquote>
    <p>Connection lost<br>
    msg : Connection lost<br>
    loc : Connection lost
    cause : java.io.EOFException<br>
    excep : Connection lost (32109) - java.io.EOFException</p>
  </blockquote>
  
  <p>I searched for this problem . but i can't find any true answer ! some link i founded in here {<a href="https://github.com/emqtt/emqttd/issues/551" rel="noreferrer">here</a> , <a href="https://stackoverflow.com/questions/33998919/eclipse-paho-mqttgetting-java-io-eof-exception">here</a>  , <a href="https://stackoverflow.com/questions/19813101/java-io-eofexception-with-paho">here</a> , ... }</p>
  
  <p>My code :</p>
  
  <pre><code>private final String DEFAULT_HOST = "edge-mqtt.facebook.com";
  private final int DEFAULT_PORT = 443;
  
  public void connect(String protogle) throws Exception {
  
      this.broker =  protogle + "://"+ DEFAULT_HOST + ":" + DEFAULT_PORT;
      this.mqttClient = new MqttClient(broker,getMqttClientId() ,new MemoryPersistence() );
  
      MqttConnectOptions connOpts = new MqttConnectOptions();
      connOpts.setCleanSession(true);
      connOpts.setKeepAliveInterval( MQTT_KEEPALIVE);
      connOpts.setUserName( getMqttUsername() );
      connOpts.setPassword( getMqttPassword().toCharArray() );
      //connOpts.setMqttVersion( 3 );//some times it have an error
      //connOpts.setSocketFactory(SSLTunnelSocketFactory.getInstance());
      Logger.w("Connecting to broker: "+broker);
      Logger.w("isConnected:"+mqttClient.isConnected());
      try {
          IMqttToken cn = mqttClient.connectWithResult(connOpts);
          Logger.w("connected");
      }catch (MqttException me){
          System.out.println("reason "+me.getReasonCode());
          System.out.println("msg "+me.getMessage());
          System.out.println("loc "+me.getLocalizedMessage());
          System.out.println("cause "+me.getCause());
          System.out.println("excep "+me);
          return;
      }
  
  
  
      this.mqttClient.setCallback(new MqttCallback() {
          @Override
          public void connectionLost(Throwable me) {
              Logger.w("Connection lost");
              System.out.println("msg "+me.getMessage());
              System.out.println("loc "+me.getLocalizedMessage());
              System.out.println("cause "+me.getCause());
              System.out.println("excep "+me);
          }
  
          @Override
          public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
              Logger.w("message Arrived");
          }
  
          @Override
          public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
              Logger.w("deliverd--------");
              try {
                  MqttDeliveryToken token  = (MqttDeliveryToken) iMqttDeliveryToken;
                  String h = token.getMessage().toString();
                  Logger.w("deliverd message :"+h);
              } catch (MqttException me) {
                  System.out.println("reason "+me.getReasonCode());
                  System.out.println("msg "+me.getMessage());
                  System.out.println("loc "+me.getLocalizedMessage());
                  System.out.println("cause "+me.getCause());
                  System.out.println("excep "+me);
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      });
  
  
  
  }
  </code></pre>
  
  <p>And publish method :</p>
  
  <pre><code>private void publish(String topic , String payload , int qosLevel) throws Exception {
      Logger.w("start publishing :");
      //payload = Helper.zlib_encode(payload);
      topic = mapTopic(topic);
  
      MqttMessage message = new MqttMessage();
      message.setPayload(payload.getBytes("UTF-8") );
      message.setQos(0);
  
      mqttClient.publish(topic , message);
      Logger.w("publised------------------");
  }
  </code></pre>
  
  <p>output :</p>
  
  <pre><code> Connecting to broker: ssl://edge-mqtt.facebook.com:443  
   isConnected:false  
   connected  
   start publishing :  
   deliverd--------  
   publised------------------  
   deliverd message : //my message
   Connection lost
   msg : Connection lost
   loc : Connection lost
   cause : java.io.EOFException
   excep : Connection lost (32109) - java.io.EOFException
  </code></pre>
  
  <p>Eclipse paho log :</p>
  
  <pre><code> ============== Connection options ==============
   CleanSession                :  true
   SocketFactory               :  sun.security.ssl.SSLSocketFactoryImpl@6c010ee9
   MqttVersion                 :  3
   KeepAliveInterval           :  60
   ConTimeout                  :  30
   UserName                    :  . . . 
   SSLProperties               :  null
   WillDestination             :  null
   ==========================================
   2017-10-19 09:42:02,182 INFO  [MQTT Call: Bahram091547759    ] [MqttConnectionResultHandler   ]  - insta connected
   2017-10-19 09:42:02,187 INFO  [JavaFX Application Thread     ] [MqttEventHandler              ]  - About to resubscribe to all requested topics
   2017-10-19 09:42:08,559 INFO  [JavaFX Application Thread     ] [MqttAsyncConnection           ]  - Publishing message on topic "k.,".  Payload size = "3"
   2017-10-19 09:42:08,739 ERROR [MQTT Rec: Bahram091547759     ] [MqttCallbackHandler           ]  - Connection insta lost
   Connection lost (32109) - java.io.EOFException
       at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java: 146)
       at java.lang.Thread.run(Unknown Source)
   Caused by: java.io.EOFException
       at java.io.DataInputStream.readByte(Unknown Source)
       at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMess age(MqttInputStream.java:65)
       at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:107)
       ... 1 more
  </code></pre>