diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java index a2224b93..486b445f 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java @@ -82,9 +82,9 @@ public class LiveClientSettings { /** * Interval of time in milliseconds between pings to TikTok - * @apiNote Min: 250 (0.25 seconds), Default: 5000 (5 seconds) + * @apiNote Min: 250 (0.25 seconds), Default: 10000 (10 seconds - TikTok Default) */ - private long pingInterval = 5000; + private long pingInterval = 10000; /** Throw an exception on 18+ Age Restriction */ private boolean throwOnAgeRestriction; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java index 8c01568b..8aa30b5c 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java @@ -138,7 +138,7 @@ public LiveClient build() { //networking dependance.registerSingleton(HttpClientFactory.class); - dependance.registerSingleton(TikTokWebSocketPingingTask.class); + dependance.registerSingleton(WebSocketHeartbeatTask.class); if (clientSettings.isOffline()) { dependance.registerSingleton(LiveSocketClient.class, TikTokWebSocketOfflineClient.class); dependance.registerSingleton(LiveHttpClient.class, TikTokLiveHttpOfflineClient.class); diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java index a4d36c57..1ae808ba 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java @@ -40,7 +40,7 @@ public class TikTokWebSocketClient implements LiveSocketClient { private final LiveClientSettings clientSettings; private final LiveMessagesHandler messageHandler; private final LiveEventsHandler tikTokEventHandler; - private final TikTokWebSocketPingingTask pingingTask; + private final WebSocketHeartbeatTask heartbeatTask; private WebSocketClient webSocketClient; private boolean isConnected; @@ -48,12 +48,12 @@ public TikTokWebSocketClient( LiveClientSettings clientSettings, LiveMessagesHandler messageHandler, LiveEventsHandler tikTokEventHandler, - TikTokWebSocketPingingTask pingingTask) + WebSocketHeartbeatTask heartbeatTask) { this.clientSettings = clientSettings; this.messageHandler = messageHandler; this.tikTokEventHandler = tikTokEventHandler; - this.pingingTask = pingingTask; + this.heartbeatTask = heartbeatTask; isConnected = false; } @@ -84,7 +84,7 @@ public void start(LiveConnectionData.Response connectionData, LiveClient liveCli private void connectDefault() { try { webSocketClient.connect(); - pingingTask.run(webSocketClient, clientSettings.getPingInterval()); + heartbeatTask.run(webSocketClient, clientSettings.getPingInterval()); isConnected = true; } catch (Exception e) { isConnected = false; @@ -120,7 +120,7 @@ public X509Certificate[] getAcceptedIssuers() { proxySettings.remove(); continue; } - pingingTask.run(webSocketClient, clientSettings.getPingInterval()); + heartbeatTask.run(webSocketClient, clientSettings.getPingInterval()); isConnected = true; break; } @@ -141,7 +141,7 @@ public boolean tryProxyConnection(ProxyClientSettings proxySettings, ProxyData p public void stop() { if (isConnected && webSocketClient != null && webSocketClient.isOpen()) { webSocketClient.closeConnection(0, ""); - pingingTask.stop(); + heartbeatTask.stop(); } webSocketClient = null; isConnected = false; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/WebSocketHeartbeatTask.java similarity index 84% rename from Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java rename to Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/WebSocketHeartbeatTask.java index ae2fbdb5..d96014a7 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/WebSocketHeartbeatTask.java @@ -22,18 +22,19 @@ */ package io.github.jwdeveloper.tiktok.websocket; -import io.github.jwdeveloper.tiktok.live.LiveEventsHandler; import org.java_websocket.WebSocket; -public class TikTokWebSocketPingingTask { +public class WebSocketHeartbeatTask +{ private Thread thread; private boolean isRunning = false; private final int MAX_TIMEOUT = 250; private final int SLEEP_TIME = 500; + private final byte[] heartbeatBytes = {58, 2, 104, 98}; // Byte Array of "3A026862" which is TikTok's custom heartbeat value public void run(WebSocket webSocket, long pingTaskTime) { stop(); - thread = new Thread(() -> pingTask(webSocket, pingTaskTime), "pinging-task"); + thread = new Thread(() -> heartbeatTask(webSocket, pingTaskTime), "heartbeat-task"); isRunning = true; thread.start(); } @@ -44,11 +45,11 @@ public void stop() { isRunning = false; } - private void pingTask(WebSocket webSocket, long pingTaskTime) { + private void heartbeatTask(WebSocket webSocket, long pingTaskTime) { while (isRunning) { try { if (webSocket.isOpen()) { - webSocket.sendPing(); + webSocket.send(heartbeatBytes); Thread.sleep(pingTaskTime + (int) (Math.random() * MAX_TIMEOUT)); } else Thread.sleep(SLEEP_TIME);