Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-11-08 17:20:20 +01:00
Fixed reconnecting to the api
Dieser Commit ist enthalten in:
Ursprung
0832e7d65c
Commit
e7eca7f7b9
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
package org.geysermc.connector.skin;
|
package org.geysermc.connector.skin;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
@ -38,6 +39,7 @@ import org.geysermc.floodgate.util.WebsocketEventType;
|
|||||||
import org.java_websocket.client.WebSocketClient;
|
import org.java_websocket.client.WebSocketClient;
|
||||||
import org.java_websocket.handshake.ServerHandshake;
|
import org.java_websocket.handshake.ServerHandshake;
|
||||||
|
|
||||||
|
import java.net.ConnectException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -138,19 +140,22 @@ public final class FloodgateSkinUploader {
|
|||||||
String error = node.get("error").asText();
|
String error = node.get("error").asText();
|
||||||
logger.info("Got disconnected from the skin uploader: " + error);
|
logger.info("Got disconnected from the skin uploader: " + error);
|
||||||
}
|
}
|
||||||
// it can't be something else then info or error, so we won't handle anything other than that.
|
} catch (JsonProcessingException ignored) {
|
||||||
// try to reconnect (which will make a new id and verify token) after a few seconds
|
// ignore invalid json
|
||||||
reconnectLater(connector);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error while handling onClose", e);
|
logger.error("Error while handling onClose", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// try to reconnect (which will make a new id and verify token) after a few seconds
|
||||||
|
reconnectLater(connector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Exception ex) {
|
public void onError(Exception ex) {
|
||||||
|
if (!(ex instanceof ConnectException)) {
|
||||||
logger.error("Got an error", ex);
|
logger.error("Got an error", ex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,17 +185,10 @@ public final class FloodgateSkinUploader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reconnectLater(GeyserConnector connector) {
|
private void reconnectLater(GeyserConnector connector) {
|
||||||
//todo doesn't work
|
|
||||||
long additionalTime = ThreadLocalRandom.current().nextInt(7);
|
long additionalTime = ThreadLocalRandom.current().nextInt(7);
|
||||||
connector.getGeneralThreadPool().schedule(() -> {
|
// we don't have to check the result. onClose will handle that for us
|
||||||
try {
|
connector.getGeneralThreadPool()
|
||||||
if (!client.connectBlocking()) {
|
.schedule(client::reconnect, 8 + additionalTime, TimeUnit.SECONDS);
|
||||||
reconnectLater(connector);
|
|
||||||
}
|
|
||||||
} catch (InterruptedException ignored) {
|
|
||||||
reconnectLater(connector);
|
|
||||||
}
|
|
||||||
}, 8 + additionalTime, TimeUnit.SECONDS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FloodgateSkinUploader start() {
|
public FloodgateSkinUploader start() {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren