diff --git a/src/main/java/com/binance/connector/futures/client/impl/CMWebsocketClientImpl.java b/src/main/java/com/binance/connector/futures/client/impl/CMWebsocketClientImpl.java
index 05b234f..fa45a21 100644
--- a/src/main/java/com/binance/connector/futures/client/impl/CMWebsocketClientImpl.java
+++ b/src/main/java/com/binance/connector/futures/client/impl/CMWebsocketClientImpl.java
@@ -5,6 +5,7 @@
import com.binance.connector.futures.client.utils.WebSocketCallback;
import com.binance.connector.futures.client.utils.ParameterChecker;
import okhttp3.Request;
+import java.time.Duration;
/**
*
COIN-M Websocket Streams
@@ -17,11 +18,15 @@
*/
public class CMWebsocketClientImpl extends WebsocketClientImpl {
public CMWebsocketClientImpl() {
- super(DefaultUrls.COINM_WS_URL);
+ super(DefaultUrls.COINM_WS_URL, Duration.ZERO);
}
public CMWebsocketClientImpl(String baseUrl) {
- super(baseUrl);
+ super(baseUrl, Duration.ZERO);
+ }
+
+ public CMWebsocketClientImpl(String baseUrl, Duration pingInterval) {
+ super(baseUrl, pingInterval);
}
/**
diff --git a/src/main/java/com/binance/connector/futures/client/impl/UMWebsocketClientImpl.java b/src/main/java/com/binance/connector/futures/client/impl/UMWebsocketClientImpl.java
index bce6091..3bd4268 100644
--- a/src/main/java/com/binance/connector/futures/client/impl/UMWebsocketClientImpl.java
+++ b/src/main/java/com/binance/connector/futures/client/impl/UMWebsocketClientImpl.java
@@ -5,6 +5,7 @@
import com.binance.connector.futures.client.utils.WebSocketCallback;
import com.binance.connector.futures.client.utils.ParameterChecker;
import okhttp3.Request;
+import java.time.Duration;
/**
* USDⓈ-M Websocket Streams
@@ -18,11 +19,15 @@
public class UMWebsocketClientImpl extends WebsocketClientImpl {
public UMWebsocketClientImpl() {
- super(DefaultUrls.USDM_WS_URL);
+ super(DefaultUrls.USDM_WS_URL, Duration.ZERO);
}
public UMWebsocketClientImpl(String baseUrl) {
- super(baseUrl);
+ super(baseUrl, Duration.ZERO);
+ }
+
+ public UMWebsocketClientImpl(String baseUrl, Duration pingInterval) {
+ super(baseUrl, pingInterval);
}
/**
diff --git a/src/main/java/com/binance/connector/futures/client/impl/WebsocketClientImpl.java b/src/main/java/com/binance/connector/futures/client/impl/WebsocketClientImpl.java
index 513aa69..90d3f71 100644
--- a/src/main/java/com/binance/connector/futures/client/impl/WebsocketClientImpl.java
+++ b/src/main/java/com/binance/connector/futures/client/impl/WebsocketClientImpl.java
@@ -7,6 +7,7 @@
import com.binance.connector.futures.client.utils.WebSocketCallback;
import com.binance.connector.futures.client.utils.WebSocketConnection;
import com.binance.connector.futures.client.utils.ParameterChecker;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -28,13 +29,15 @@
*/
public abstract class WebsocketClientImpl implements WebsocketClient {
private final String baseUrl;
+ private final Duration pingInterval;
private final Map connections = new HashMap<>();
private final WebSocketCallback noopCallback = msg -> {
};
private static final Logger logger = LoggerFactory.getLogger(WebsocketClientImpl.class);
- public WebsocketClientImpl(String baseUrl) {
+ public WebsocketClientImpl(String baseUrl, Duration pingInterval) {
this.baseUrl = baseUrl;
+ this.pingInterval = pingInterval;
}
public WebSocketCallback getNoopCallback() {
@@ -715,7 +718,7 @@ public int createConnection(
WebSocketCallback onFailureCallback,
Request request
) {
- WebSocketConnection connection = new WebSocketConnection(onOpenCallback, onMessageCallback, onClosingCallback, onFailureCallback, request);
+ WebSocketConnection connection = new WebSocketConnection(onOpenCallback, onMessageCallback, onClosingCallback, onFailureCallback, request, this.pingInterval);
connection.connect();
int connectionId = connection.getConnectionId();
connections.put(connectionId, connection);
diff --git a/src/main/java/com/binance/connector/futures/client/utils/WebSocketConnection.java b/src/main/java/com/binance/connector/futures/client/utils/WebSocketConnection.java
index 4994b73..84bdd89 100644
--- a/src/main/java/com/binance/connector/futures/client/utils/WebSocketConnection.java
+++ b/src/main/java/com/binance/connector/futures/client/utils/WebSocketConnection.java
@@ -1,5 +1,6 @@
package com.binance.connector.futures.client.utils;
+import java.time.Duration;
import java.util.concurrent.atomic.AtomicInteger;
import okhttp3.OkHttpClient;
import okhttp3.Request;
@@ -12,7 +13,6 @@
public class WebSocketConnection extends WebSocketListener {
private static final AtomicInteger connectionCounter = new AtomicInteger(0);
private static final int NORMAL_CLOSURE_STATUS = 1000;
- private static final OkHttpClient client = HttpClientSingleton.getHttpClient();
private static final Logger logger = LoggerFactory.getLogger(WebSocketConnection.class);
private final WebSocketCallback onOpenCallback;
@@ -23,6 +23,7 @@ public class WebSocketConnection extends WebSocketListener {
private final Request request;
private final String streamName;
+ private final OkHttpClient client;
private WebSocket webSocket;
private final Object mutex;
@@ -32,7 +33,8 @@ public WebSocketConnection(
WebSocketCallback onMessageCallback,
WebSocketCallback onClosingCallback,
WebSocketCallback onFailureCallback,
- Request request
+ Request request,
+ Duration pingInterval
) {
this.onOpenCallback = onOpenCallback;
this.onMessageCallback = onMessageCallback;
@@ -43,6 +45,10 @@ public WebSocketConnection(
this.streamName = request.url().host() + request.url().encodedPath();
this.webSocket = null;
this.mutex = new Object();
+
+ OkHttpClient.Builder builder = HttpClientSingleton.getHttpClient().newBuilder();
+ builder.pingInterval(pingInterval);
+ this.client = builder.build();
}
public void connect() {