P.S. 결론을 내리기 전에 전체 질문을 읽으십시오.연결이 끊어졌습니다 (32109) - java.io.EOFException (MqttAndroidClient)
나는 connect 메소드가 호출 될 때마다 다음과 같은 예외가 점점 오전 :
연결이 끊어 (32109)를 - java.io.EOFException 을 org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run에서 (CommsReceiver.java:146) at java.lang.Thread.run (Thread.java:818) 에 의해 발생 : java.io.EOFException at java.io.DataInputStream.readByte (DataInputStream.java:77) at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage (MqttInputStream.java:65) at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run (CommsReceiver.java:107)
나는 몇 가지 코드 스 니펫을 시도했지만 두 가지 모두 동일한 예외를 발생시킵니다. 나는 동일한 서버 URI에서를하려고하면
방법 1
private final String serverUri = "tcp://95.177.135.232:9001";
private void mqqtConnectAndroidClient() {
String clientId = "clientID-" + MqttClient.generateClientId();
mqttAndroidClient = new MqttAndroidClient(getMainActivity(), serverUri, clientId);
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
mqttConnectOptions.setKeepAliveInterval(60);
mqttConnectOptions.setCleanSession(true);
mqttConnectOptions.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1_1);
try {
mqttAndroidClient.connect(mqttConnectOptions, null, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
subscribeToTopic();
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
AppLog.Error("Failed to connect to: " + serverUri);
exception.printStackTrace();
}
});
} catch (MqttException e) {
e.printStackTrace();
}
}
방법 2
private final String serverUri = "tcp://95.177.135.232:9001";
private void methodTwo() {
try {
MqttDefaultFilePersistence mdfp = new MqttDefaultFilePersistence(MQTT_DIR);
mqttClient = new MqttClient(serverUri, "1", mdfp);
MqttConnectOptions options = new MqttConnectOptions();
options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1_1);
options.setKeepAliveInterval(60);
options.setAutomaticReconnect(true);
options.setCleanSession(true);
mqttClient.connect(options);
mqttClient.subscribe("#");
mqttClient.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable arg0) {
AppLog.Error("Connection lost");
try {
mqttClient.connect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken arg0) {
AppLog.Error("deliveryComplete");
}
@Override
public void messageArrived(String arg0, MqttMessage arg1) throws Exception {
AppLog.Error("messageArrived");
AppLog.Error(arg1.toString());
}
});
} catch (MqttException e) {
AppLog.Error("Main Exception");
e.printStackTrace();
}
}
방법
public void subscribeToTopic() {
try {
String subscriptionTopic = "#";
mqttAndroidClient.subscribe(subscriptionTopic, 0, null, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
AppLog.Error("Subscribed!");
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
AppLog.Error("Failed to subscribe");
}
});
} catch (MqttException ex) {
System.err.println("Exception whilst subscribing");
ex.printStackTrace();
}
}
구독 HiveMQ, 적절한 연결 및 구독으로 완벽하게 작동하며 나에게 결과를 제공합니다.
컴파일 'org.eclipse.paho : org.eclipse.paho.client.mqttv3 : 1.1.0' 컴파일 'org.eclipse.paho : org.eclipse.paho 나는 다음과 같은 두 개의 라이브러리를 사용하고 있습니다 .android.service : 나는 SO 몇 가지 답변을 시도 1.0.2 '
는 One, Two, Three, Four 및 Five을 좋아하지만, 그들 중 누구도 나를 위해 작동하지 않습니다.
도움이 될 것입니다. 미리 감사드립니다.
네가 맞습니다. 나는 ws : //를 시도했지만 웹 소켓 클라이언트를 사용했고 그 경우 거절했다. –