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 3ac9b9d..0567c89 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
@@ -86,9 +86,23 @@ public class LiveClientSettings {
private HttpClientSettings httpSettings;
/**
- * Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
- * documentation how to obtain sessionId https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages
+ * Loop time in milliseconds between pings to TikTok
+ * @apiNote Min: 250 (0.25 seconds), Max: 30000 (30 seconds), Default: 5000 (5 seconds)
*/
+ private long pingTaskTime = 5000;
+
+ public void setPingTaskTime(long pingTaskTime) {
+ if (pingTaskTime < 250)
+ throw new IllegalArgumentException("Minimum allowed value 250 millseconds");
+ if (pingTaskTime > 30000)
+ throw new IllegalArgumentException("Maximum allowed value 30000 milliseconds");
+ this.pingTaskTime = pingTaskTime;
+ }
+
+ /**
+ * Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
+ * @see Documentation: How to obtain sessionId
+ */
private String sessionId;
/**
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 d3f0f19..e0d1779 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
@@ -82,7 +82,7 @@ public class TikTokWebSocketClient implements SocketClient {
private void connectDefault() {
try {
webSocketClient.connect();
- pingingTask.run(webSocketClient);
+ pingingTask.run(webSocketClient, clientSettings.getPingTaskTime());
isConnected = true;
} catch (Exception e) {
isConnected = false;
@@ -112,7 +112,7 @@ public class TikTokWebSocketClient implements SocketClient {
proxySettings.remove();
continue;
}
- pingingTask.run(webSocketClient);
+ pingingTask.run(webSocketClient, clientSettings.getPingTaskTime());
isConnected = true;
break;
}
diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java
index 90adbc4..e44987b 100644
--- a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java
+++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java
@@ -8,13 +8,13 @@ public class TikTokWebSocketPingingTask
{
private Thread thread;
private boolean isRunning = false;
- private final int MIN_TIMEOUT = 250;
- private final int MAX_TIMEOUT = 500;
+ private final int MAX_TIMEOUT = 250;
+ private final int SLEEP_TIME = 500;
- public void run(WebSocket webSocket)
+ public void run(WebSocket webSocket, long pingTaskTime)
{
stop();
- thread = new Thread(() -> pingTask(webSocket));
+ thread = new Thread(() -> pingTask(webSocket, pingTaskTime));
isRunning = true;
thread.start();
}
@@ -26,20 +26,18 @@ public class TikTokWebSocketPingingTask
isRunning = false;
}
-
- private void pingTask(WebSocket webSocket)
+ private void pingTask(WebSocket webSocket, long pingTaskTime)
{
var random = new Random();
while (isRunning) {
try {
if (!webSocket.isOpen()) {
- Thread.sleep(100);
+ Thread.sleep(SLEEP_TIME);
continue;
}
webSocket.sendPing();
- var timeout = random.nextInt(MAX_TIMEOUT)+MIN_TIMEOUT;
- Thread.sleep(timeout);
+ Thread.sleep(pingTaskTime+random.nextInt(MAX_TIMEOUT));
}
catch (Exception e) {
isRunning = false;
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java
index 98e52c4..c9634e3 100644
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java
+++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java
@@ -24,6 +24,7 @@ package io.github.jwdeveloper.tiktok;
import io.github.jwdeveloper.tiktok.extension.collector.TikTokLiveCollector;
+import org.bson.Document;
import java.io.IOException;
import java.util.List;
@@ -40,7 +41,7 @@ public class CollectorExample {
public static void main(String[] args) throws IOException {
- var collector = TikTokLiveCollector.use(settings ->
+ var collector = TikTokLiveCollector.useMongo(settings ->
{
settings.setConnectionUrl("mongodb+srv://" + mongoUser + ":" + mongoPassword + "@" + mongoDatabase + "/?retryWrites=true&w=majority");
settings.setDatabaseName("tiktok");
@@ -59,10 +60,10 @@ public class CollectorExample {
{
event.getException().printStackTrace();
})
- .addListener(collector.newListener(additionalDataFields, document ->
+ .addListener(collector.newListener(additionalDataFields, o ->
{
//filtering document data before it is inserted to database
- if (document.get("dataType") == "message") {
+ if (o instanceof Document document && document.get("dataType") == "message") {
return false;
}
return true;
@@ -73,4 +74,4 @@ public class CollectorExample {
System.in.read();
collector.disconnectDatabase();
}
-}
+}
\ No newline at end of file
diff --git a/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/api/mongo/MongoDataCollectorSettings.java b/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/api/mongo/MongoDataCollectorSettings.java
index bdabb40..149e2b3 100644
--- a/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/api/mongo/MongoDataCollectorSettings.java
+++ b/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/api/mongo/MongoDataCollectorSettings.java
@@ -35,7 +35,7 @@ public class MongoDataCollectorSettings {
private String sessionTag;
- public void setConnectionUrl(Consumer consumer) {
+ public void setConnectionUrlConsumer(Consumer consumer) {
var builder = new MongoDBConnectionStringBuilder();
consumer.accept(builder);
connectionUrl = builder.build();