done i think
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package com.minster586.tiktokstream.websocket;
|
||||
|
||||
|
||||
import org.java_websocket.client.WebSocketClient;
|
||||
import org.java_websocket.handshake.ServerHandshake;
|
||||
import java.net.URI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import com.minster586.tiktokstream.TikTokStreamPlugin;
|
||||
import com.minster586.tiktokstream.config.ConfigManager;
|
||||
|
||||
public class StreamerBotWebSocketClient extends WebSocketClient {
|
||||
private int retryCount = 0;
|
||||
private final ConfigManager configManager;
|
||||
private final int maxRetries;
|
||||
private final String notifyPermission;
|
||||
private final String notifyMessage;
|
||||
|
||||
public StreamerBotWebSocketClient(URI serverUri) {
|
||||
super(serverUri);
|
||||
this.configManager = TikTokStreamPlugin.getInstance().getConfigManager();
|
||||
this.maxRetries = configManager != null ? configManager.getIntOrDefault("config.websocket.retry-count", 3) : 3;
|
||||
this.notifyPermission = configManager != null ? configManager.getStringOrDefault("config.websocket.notify-permission", "tiktok.live") : "tiktok.live";
|
||||
this.notifyMessage = configManager != null ? configManager.getStringOrDefault("config.websocket.notify-message", "§c[StreamerBot] Could not connect after %retries% attempts. Check your config or Streamer.bot status.") : "§c[StreamerBot] Could not connect after %retries% attempts. Check your config or Streamer.bot status.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpen(ServerHandshake handshakedata) {
|
||||
retryCount = 0; // Reset on successful connection
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(String message) {
|
||||
// Handle incoming messages from Streamer.bot here
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(int code, String reason, boolean remote) {
|
||||
if (retryCount < maxRetries) {
|
||||
retryCount++;
|
||||
try {
|
||||
Thread.sleep(2000L * retryCount); // Exponential backoff
|
||||
} catch (InterruptedException ignored) {}
|
||||
this.reconnect();
|
||||
} else {
|
||||
String msg = notifyMessage.replace("%retries%", String.valueOf(maxRetries));
|
||||
notifyOps(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
// Optionally log errors
|
||||
}
|
||||
|
||||
private void notifyOps(String message) {
|
||||
Bukkit.getScheduler().runTask(Bukkit.getPluginManager().getPlugin("TikTokStreamPlugin"), () -> {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
if (player.isOp() || player.hasPermission(notifyPermission)) {
|
||||
player.sendMessage(message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user