Enables the HTTP compression in JBOSH

Adds an extra parameter "compressionEnabled" to ConnectionConfiguration
that is used to set the setCompressionEnabled() of BOSHClientConfig
This commit is contained in:
Marcel Heckel 2018-11-08 13:36:45 +01:00
parent b7ea226c56
commit 1ea10831b6
3 changed files with 23 additions and 32 deletions

View File

@ -157,6 +157,8 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
if (config.isProxyEnabled()) {
cfgBuilder.setProxy(config.getProxyAddress(), config.getProxyPort());
}
cfgBuilder.setCompressionEnabled(config.isCompressionEnabled());
client = BOSHClient.create(cfgBuilder.build());
client.addBOSHClientConnListener(new BOSHConnectionListener());

View File

@ -125,6 +125,8 @@ public abstract class ConnectionConfiguration {
private final Set<String> enabledSaslMechanisms;
private final boolean compressionEnabled;
protected ConnectionConfiguration(Builder<?,?> builder) {
authzid = builder.authzid;
username = builder.username;
@ -162,6 +164,8 @@ public abstract class ConnectionConfiguration {
allowNullOrEmptyUsername = builder.allowEmptyOrNullUsername;
enabledSaslMechanisms = builder.enabledSaslMechanisms;
compressionEnabled = builder.compressionEnabled;
// If the enabledSaslmechanisms are set, then they must not be empty
assert (enabledSaslMechanisms != null ? !enabledSaslMechanisms.isEmpty() : true);
@ -440,8 +444,7 @@ public abstract class ConnectionConfiguration {
* @return true if the connection is going to use stream compression.
*/
public boolean isCompressionEnabled() {
// Compression for non-TCP connections is always disabled
return false;
return compressionEnabled;
}
/**
@ -513,6 +516,7 @@ public abstract class ConnectionConfiguration {
private boolean saslMechanismsSealed;
private Set<String> enabledSaslMechanisms;
private X509TrustManager customX509TrustManager;
private boolean compressionEnabled = false;
protected Builder() {
if (SmackConfiguration.DEBUG) {
@ -946,6 +950,21 @@ public abstract class ConnectionConfiguration {
return getThis();
}
/**
* Sets if the connection is going to use compression (default false).
*
* Compression is only activated if the server offers compression. With compression network
* traffic can be reduced up to 90%. By default compression is disabled.
*
* @param compressionEnabled if the connection is going to use compression on the HTTP level.
* @return a reference to this object.
*/
public B setCompressionEnabled(boolean compressionEnabled) {
this.compressionEnabled = compressionEnabled;
return getThis();
}
public abstract C build();
protected abstract B getThis();

View File

@ -41,8 +41,6 @@ public final class XMPPTCPConnectionConfiguration extends ConnectionConfiguratio
*/
public static int DEFAULT_CONNECT_TIMEOUT = 30000;
private final boolean compressionEnabled;
/**
* How long the socket will wait until a TCP connection is established (in milliseconds).
*/
@ -50,23 +48,9 @@ public final class XMPPTCPConnectionConfiguration extends ConnectionConfiguratio
private XMPPTCPConnectionConfiguration(Builder builder) {
super(builder);
compressionEnabled = builder.compressionEnabled;
connectTimeout = builder.connectTimeout;
}
/**
* Returns true if the connection is going to use stream compression. Stream compression
* will be requested after TLS was established (if TLS was enabled) and only if the server
* offered stream compression. With stream compression network traffic can be reduced
* up to 90%. By default compression is disabled.
*
* @return true if the connection is going to use stream compression.
*/
@Override
public boolean isCompressionEnabled() {
return compressionEnabled;
}
/**
* How long the socket will wait until a TCP connection is established (in milliseconds). Defaults to {@link #DEFAULT_CONNECT_TIMEOUT}.
*
@ -91,20 +75,6 @@ public final class XMPPTCPConnectionConfiguration extends ConnectionConfiguratio
private Builder() {
}
/**
* Sets if the connection is going to use stream compression. Stream compression
* will be requested after TLS was established (if TLS was enabled) and only if the server
* offered stream compression. With stream compression network traffic can be reduced
* up to 90%. By default compression is disabled.
*
* @param compressionEnabled if the connection is going to use stream compression.
* @return a reference to this object.
*/
public Builder setCompressionEnabled(boolean compressionEnabled) {
this.compressionEnabled = compressionEnabled;
return this;
}
/**
* Set how long the socket will wait until a TCP connection is established (in milliseconds).
*