diff --git a/OCPP-J/build.gradle b/OCPP-J/build.gradle
index c2fcadd2..be3c889a 100644
--- a/OCPP-J/build.gradle
+++ b/OCPP-J/build.gradle
@@ -5,7 +5,7 @@
dependencies {
compile project(':common')
compile 'com.google.code.gson:gson:2.8.9'
- compile 'org.java-websocket:Java-WebSocket:1.5.3'
+ compile 'org.java-websocket:Java-WebSocket:1.6.0'
testCompile 'junit:junit:4.13.2'
testCompile 'org.mockito:mockito-core:4.11.0'
testCompile 'org.hamcrest:hamcrest-core:1.3'
diff --git a/OCPP-J/pom.xml b/OCPP-J/pom.xml
index 872916fb..8647501d 100644
--- a/OCPP-J/pom.xml
+++ b/OCPP-J/pom.xml
@@ -61,7 +61,7 @@
org.java-websocket
Java-WebSocket
- 1.5.4
+ 1.6.0
junit
diff --git a/OCPP-J/src/main/java/eu/chargetime/ocpp/JSONConfiguration.java b/OCPP-J/src/main/java/eu/chargetime/ocpp/JSONConfiguration.java
index 78255043..f5da6146 100644
--- a/OCPP-J/src/main/java/eu/chargetime/ocpp/JSONConfiguration.java
+++ b/OCPP-J/src/main/java/eu/chargetime/ocpp/JSONConfiguration.java
@@ -38,6 +38,7 @@ public class JSONConfiguration {
public static final String PASSWORD_PARAMETER = "PASSWORD";
public static final String CONNECT_NON_BLOCKING_PARAMETER = "CONNECT_NON_BLOCKING";
public static final String CONNECT_TIMEOUT_IN_MS_PARAMETER = "CONNECT_TIMEOUT_IN_MS";
+ public static final String WEBSOCKET_COMPRESSION_SUPPORT = "WEBSOCKET_COMPRESSION_SUPPORT";
public static final String WEBSOCKET_WORKER_COUNT = "WEBSOCKET_WORKER_COUNT";
public static final String HTTP_HEALTH_CHECK_ENABLED = "HTTP_HEALTH_CHECK_ENABLED";
public static final String OCPPJ_CP_MIN_PASSWORD_LENGTH = "OCPPJ_CP_MIN_PASSWORD_LENGTH";
diff --git a/ocpp-v1_6-example/json-client-implementation/pom.xml b/ocpp-v1_6-example/json-client-implementation/pom.xml
index c4b9e15b..d3b56947 100644
--- a/ocpp-v1_6-example/json-client-implementation/pom.xml
+++ b/ocpp-v1_6-example/json-client-implementation/pom.xml
@@ -36,7 +36,7 @@
org.java-websocket
Java-WebSocket
- 1.5.3
+ 1.6.0
com.google.code.gson
diff --git a/ocpp-v1_6-example/json_server_example/pom.xml b/ocpp-v1_6-example/json_server_example/pom.xml
index 1d3c6ec9..69dd3f17 100644
--- a/ocpp-v1_6-example/json_server_example/pom.xml
+++ b/ocpp-v1_6-example/json_server_example/pom.xml
@@ -36,7 +36,7 @@
org.java-websocket
Java-WebSocket
- 1.5.3
+ 1.6.0
com.google.code.gson
diff --git a/ocpp-v1_6/build.gradle b/ocpp-v1_6/build.gradle
index 6d7b823e..b287c9c1 100644
--- a/ocpp-v1_6/build.gradle
+++ b/ocpp-v1_6/build.gradle
@@ -5,7 +5,7 @@
dependencies {
compile project(':common')
compile project(':OCPP-J')
- compile 'org.java-websocket:Java-WebSocket:1.5.3'
+ compile 'org.java-websocket:Java-WebSocket:1.6.0'
compile group: 'javax.xml.soap', name: 'javax.xml.soap-api', version: '1.4.0'
testCompile 'junit:junit:4.13.2'
diff --git a/ocpp-v1_6/pom.xml b/ocpp-v1_6/pom.xml
index 95c7babc..698bed21 100644
--- a/ocpp-v1_6/pom.xml
+++ b/ocpp-v1_6/pom.xml
@@ -60,7 +60,7 @@
org.java-websocket
Java-WebSocket
- 1.5.4
+ 1.6.0
junit
diff --git a/ocpp-v2/build.gradle b/ocpp-v2/build.gradle
index 666c8546..f5e8811e 100644
--- a/ocpp-v2/build.gradle
+++ b/ocpp-v2/build.gradle
@@ -7,7 +7,7 @@ dependencies {
compile project(':OCPP-J')
compile project(':v1_6')
compile 'com.google.code.findbugs:jsr305:3.0.1'
- compile 'org.java-websocket:Java-WebSocket:1.5.3'
+ compile 'org.java-websocket:Java-WebSocket:1.6.0'
testCompile 'junit:junit:4.13.2'
testCompile 'org.mockito:mockito-core:4.11.0'
testCompile 'org.hamcrest:hamcrest-core:1.3'
diff --git a/ocpp-v2/pom.xml b/ocpp-v2/pom.xml
index ec80d129..db1aa97e 100644
--- a/ocpp-v2/pom.xml
+++ b/ocpp-v2/pom.xml
@@ -70,7 +70,7 @@
org.java-websocket
Java-WebSocket
- 1.5.4
+ 1.6.0
junit
diff --git a/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONClient.java b/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONClient.java
index 5a18100f..1ca525a1 100644
--- a/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONClient.java
+++ b/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONClient.java
@@ -35,14 +35,16 @@
import eu.chargetime.ocpp.wss.WssSocketBuilder;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletionStage;
+import java.util.zip.Deflater;
import javax.annotation.Nullable;
import javax.net.ssl.SSLContext;
import org.java_websocket.drafts.Draft;
import org.java_websocket.drafts.Draft_6455;
+import org.java_websocket.extensions.IExtension;
+import org.java_websocket.extensions.permessage_deflate.PerMessageDeflateExtension;
import org.java_websocket.protocols.IProtocol;
import org.java_websocket.protocols.Protocol;
import org.slf4j.Logger;
@@ -88,11 +90,20 @@ public MultiProtocolJSONClient(
List protocolVersions, String identity, JSONConfiguration configuration) {
this.identity = identity;
featureRepository = new MultiProtocolFeatureRepository(protocolVersions);
+ List inputExtensions = new ArrayList<>();
+ if (configuration.getParameter(JSONConfiguration.WEBSOCKET_COMPRESSION_SUPPORT, false)) {
+ PerMessageDeflateExtension perMessageDeflateExtension =
+ new PerMessageDeflateExtension(Deflater.BEST_COMPRESSION);
+ perMessageDeflateExtension.setThreshold(0);
+ perMessageDeflateExtension.setServerNoContextTakeover(false);
+ perMessageDeflateExtension.setClientNoContextTakeover(false);
+ inputExtensions.add(perMessageDeflateExtension);
+ }
List inputProtocols = new ArrayList<>(protocolVersions.size());
for (ProtocolVersion protocolVersion : protocolVersions) {
inputProtocols.add(new Protocol(protocolVersion.getSubProtocolName()));
}
- Draft draft = new Draft_6455(Collections.emptyList(), inputProtocols);
+ Draft draft = new Draft_6455(inputExtensions, inputProtocols);
transmitter = new MultiProtocolWebSocketTransmitter(featureRepository, configuration, draft);
JSONCommunicator communicator = new JSONCommunicator(transmitter, false);
ISessionFactory sessionFactory = new MultiProtocolSessionFactory(featureRepository);
diff --git a/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONServer.java b/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONServer.java
index 282a6e12..343027fc 100644
--- a/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONServer.java
+++ b/ocpp-v2/src/main/java/eu/chargetime/ocpp/MultiProtocolJSONServer.java
@@ -35,13 +35,15 @@ of this software and associated documentation files (the "Software"), to deal
import eu.chargetime.ocpp.wss.WssFactoryBuilder;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletionStage;
+import java.util.zip.Deflater;
import javax.net.ssl.SSLContext;
import org.java_websocket.drafts.Draft;
import org.java_websocket.drafts.Draft_6455;
+import org.java_websocket.extensions.IExtension;
+import org.java_websocket.extensions.permessage_deflate.PerMessageDeflateExtension;
import org.java_websocket.protocols.IProtocol;
import org.java_websocket.protocols.Protocol;
import org.slf4j.Logger;
@@ -67,11 +69,20 @@ public MultiProtocolJSONServer(
featureRepository = new MultiProtocolFeatureRepository(protocolVersions);
MultiProtocolSessionFactory sessionFactory = new MultiProtocolSessionFactory(featureRepository);
+ List extensions = new ArrayList<>();
+ if (configuration.getParameter(JSONConfiguration.WEBSOCKET_COMPRESSION_SUPPORT, true)) {
+ PerMessageDeflateExtension perMessageDeflateExtension =
+ new PerMessageDeflateExtension(Deflater.BEST_COMPRESSION);
+ perMessageDeflateExtension.setThreshold(0);
+ perMessageDeflateExtension.setServerNoContextTakeover(false);
+ perMessageDeflateExtension.setClientNoContextTakeover(false);
+ extensions.add(perMessageDeflateExtension);
+ }
List protocols = new ArrayList<>(protocolVersions.size());
for (ProtocolVersion protocolVersion : protocolVersions) {
protocols.add(new Protocol(protocolVersion.getSubProtocolName()));
}
- Draft draft = new Draft_6455(Collections.emptyList(), protocols);
+ Draft draft = new Draft_6455(extensions, protocols);
if (configuration.getParameter(JSONConfiguration.HTTP_HEALTH_CHECK_ENABLED, true)) {
logger.info("JSONServer with HttpHealthCheckDraft");
diff --git a/ocpp-v2_0/build.gradle b/ocpp-v2_0/build.gradle
index 2d831fe5..d3ef9007 100644
--- a/ocpp-v2_0/build.gradle
+++ b/ocpp-v2_0/build.gradle
@@ -5,7 +5,7 @@
dependencies {
compile project(':common')
compile project(':OCPP-J')
- compile 'org.java-websocket:Java-WebSocket:1.5.3'
+ compile 'org.java-websocket:Java-WebSocket:1.6.0'
testCompile 'junit:junit:4.13.2'
testCompile 'org.mockito:mockito-core:4.11.0'
testCompile 'org.hamcrest:hamcrest-core:1.3'
diff --git a/ocpp-v2_0/pom.xml b/ocpp-v2_0/pom.xml
index 344e10d0..cb94d9dd 100644
--- a/ocpp-v2_0/pom.xml
+++ b/ocpp-v2_0/pom.xml
@@ -60,7 +60,7 @@
org.java-websocket
Java-WebSocket
- 1.5.4
+ 1.6.0
junit