Connection lost (32109) - java.io.EOFException

I used eclipse MQTT for connect to MQTT server.

I can connect to server successfully but when i publish message , i got this error

Connection lost msg : Connection lost loc : Connection lost cause : java.io.EOFException excep : Connection lost (32109) - java.io.EOFException

I searched for this problem . but i can't find any true answer ! some link i founded in here {here , here , here , ... }

My 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();
            }
        }
    });



}

And publish method :

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------------------");
}

output :

 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

Eclipse paho log :

 ============== 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

If this helps anyone... I had the same exception and fixed it by ensuring a unique client ID was generated (with MqttAsyncClient.generateClientId()), as mentioned here: https://github.com/eclipse/paho.mqtt.java/issues/207#issuecomment-338246879

Connection lost (32109), Connection lost (32109) java.io.EOFException: AutomaticReconnect causes a loop of reconnections and errors.. #474. Open. baggior opened  Connection lost msg : Connection lost loc : Connection lost cause : java.io.EOFException excep : Connection lost (32109) - java.io.EOFException. I searched for this problem . but i can't find any true answer ! some link i founded in here {here, here, here, } My code :

The javadoc for connectWithResult recommends to call setCallback(MqttCallback) prior to connecting in order that messages destined for the client can be accepted as soon as the client is connected.

Try moving the mqttClient.setCallback call up in your source code.

Also try running your program with java -Djavax.net.debug=all

Connection lost (32109) java.io.EOFException: AutomaticReconnect , If this helps anyone I had the same exception and fixed it by ensuring a unique client ID was generated (with MqttAsyncClient.generateClientId() ), as  Connection lost (32109) - java.io.EOFException #673. Open llakhch opened this issue May 19, 2019 · 9 comments Connection lost (32109) - java.io.EOFException

Try to reduce the keep-alive time to 15 sec and setConnectionTimeout to 30

  connOpts.setKeepAliveInterval(15);
  connOpts.setConnectionTimeout(30);

Connection lost (32109) - java.io.EOFException, Thanks! The detail exception is : Connection lost (32109) -  MQTT Connection lost every time an update is pushed broker was lost Connection lost (32109) - java.io.EOFException at org.eclipse.paho.

I fixed bug See more detail here: https://github.com/eclipse/paho.mqtt.java/issues/207

java.io.EOFException with paho, MqttBrokerConnection] - MQTT connection to broker was lost. Connection lost (​32109) - java.io.EOFException at org.eclipse.paho.client.mqttv3.internal. 1394531708: New client connected from 192.133.12.45 as Driver1 . Actually the flow of events is like this --- 1. From client app (an android app) a long polling is initiated towards server side app (which is a J2EE application) to get certain notification events.

[SOLVED] Mqtt connection lost with mosquitto - Bindings, the subcribe() method returns, but then the waitForCompletion() method instantly follows. Connection lost (32109) - java.io.EOFException. and “systemctl status mosquitto” says it’s running. no items configured so far - but the broker should still connect, right? is your broker alive and kicking? use a tool like mqtt.fx to connect to it and try some publish/subscribe stuff to test it out.

MQTT : Connection lost on MQTT subscriber to Internet of Things , I am getting the following EOFException in the server log ---. 00:00:12,054 ERROR [stderr] Connection lost (32109) - java.io.EOFException. MQTT : Connection lost on MQTT subscriber to 0 votes Currently writing a Java application to publish/subscribe to the Internet of Things MQTT server using the Eclipse Paho Lib (org.eclipse.paho.client.mqtt3-1.0.2.jar), both on Device and Application side.

Re: [paho-dev] MQTT Connection Lost Error, [mqtt] MQTT connection to broker was lost -- Connection lost (32109) - java.io.​EOFException. It looks like the broker is failing to make the connection described in your networkConnectors section of activemq.xml. Can you show us that config snippet? And do you have any reason to believe that connection might be failing?

Comments
  • Do you have access to the logs from the broker to see why it closed the connection? My first guess would be that you are not authorised to publish to the topic you are using.
  • @hardillb no i don't check the log . can you tel me where is the log ? and how can i check this ?
  • Not without knowing a lot more information such as what broker you are using and how you installed it. (edit the question to add these details)
  • @hardillb Eclipse paho log added
  • Still doesn't help, the connection was closed by the broker. The only way to know why is to see the broker logs, which since they belong to Facebook is unlikely to happen. As I said, most likely situation is the user is not authorised to publish to the topic
  • This worked in my case. My client Ids were not unique
  • this is not true answer . i do this. but problem not solved
  • This is a link only answer and as such is likely to be removed. Please edit the answer to include the key points.