mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 08:49:40 -05:00
Renamed PingTask to HeartbeatTask to reflect discovered byte array of TikTok's custom heartbeat value
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -138,7 +138,7 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder {
|
||||
|
||||
//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);
|
||||
|
||||
@@ -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 class TikTokWebSocketClient implements LiveSocketClient {
|
||||
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 class TikTokWebSocketClient implements LiveSocketClient {
|
||||
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 class TikTokWebSocketClient implements LiveSocketClient {
|
||||
proxySettings.remove();
|
||||
continue;
|
||||
}
|
||||
pingingTask.run(webSocketClient, clientSettings.getPingInterval());
|
||||
heartbeatTask.run(webSocketClient, clientSettings.getPingInterval());
|
||||
isConnected = true;
|
||||
break;
|
||||
}
|
||||
@@ -141,7 +141,7 @@ public class TikTokWebSocketClient implements LiveSocketClient {
|
||||
public void stop() {
|
||||
if (isConnected && webSocketClient != null && webSocketClient.isOpen()) {
|
||||
webSocketClient.closeConnection(0, "");
|
||||
pingingTask.stop();
|
||||
heartbeatTask.stop();
|
||||
}
|
||||
webSocketClient = null;
|
||||
isConnected = false;
|
||||
|
||||
@@ -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), "pinging-task");
|
||||
isRunning = true;
|
||||
thread.start();
|
||||
}
|
||||
@@ -44,11 +45,11 @@ public class TikTokWebSocketPingingTask {
|
||||
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);
|
||||
Reference in New Issue
Block a user