[undertow-dev] permessage-deflate extension is not supported, getInstalledExtensions() returns empty set in ServerWebSocketContainer.java

Stuart Douglas sdouglas at redhat.com
Sat Jul 2 19:50:59 EDT 2016


Make sure you are using Undertow 1.3.23.Final, there were some fixes
here recently.

Stuart

On Sat, Jul 2, 2016 at 4:02 AM, PingShan Li <ping.li at firemon.com> wrote:
> Based on your suggestion, we are able to add extension
> PerMessageDeflateHandshake to WebSocketDeploymentInfo.
>
> In the constructor of the ServerWebSocketContainer, the installedExtensions
> has one element of PerMessageDeflateHandshake. But when the
> getInstalledExtensions is called, it still returns empty set, should that
> function return installedExtensions instead of Collections.emptySet()?
>
>     public ServerWebSocketContainer(final ClassIntrospecter
> classIntrospecter, final ClassLoader classLoader, XnioWorker xnioWorker,
> ByteBufferPool bufferPool, ThreadSetupAction threadSetupAction, boolean
> dispatchToWorker, InetSocketAddress clientBindAddress,
> WebSocketReconnectHandler reconnectHandler, List<Extension>
> installedExtensions) {
>         this.classIntrospecter = classIntrospecter;
>         this.bufferPool = bufferPool;
>         this.xnioWorker = xnioWorker;
>         this.threadSetupAction = threadSetupAction;
>         this.dispatchToWorker = dispatchToWorker;
>         this.clientBindAddress = clientBindAddress;
>         this.installedExtensions = new ArrayList<>(installedExtensions);
>         List<WebsocketClientSslProvider> clientSslProviders = new
> ArrayList<>();
>         for (WebsocketClientSslProvider provider :
> ServiceLoader.load(WebsocketClientSslProvider.class, classLoader)) {
>             clientSslProviders.add(provider);
>         }
>
>         this.clientSslProviders =
> Collections.unmodifiableList(clientSslProviders);
>         this.webSocketReconnectHandler = reconnectHandler;
>     }
>
>     public Set<Extension> getInstalledExtensions() {
>         return Collections.emptySet();
>     }
>
>
> ________________________________
> From: Stuart Douglas <sdouglas at redhat.com>
> Sent: Wednesday, June 29, 2016 7:00:31 PM
> To: PingShan Li
> Cc: undertow-dev at lists.jboss.org
> Subject: Re: [undertow-dev] permessage-deflate extension is not supported,
> getInstalledExtensions() returns empty set in ServerWebSocketContainer.java
>
> You need to invoke
> io.undertow.websockets.jsr.WebSocketDeploymentInfo#addExtension with
> an instance of io.undertow.websockets.extensions.PerMessageDeflateHandshake
>
>
> Stuart
>
> On Thu, Jun 30, 2016 at 6:16 AM, PingShan Li <ping.li at firemon.com> wrote:
>> --- Problem:
>> client's request for compression is ignored.
>>
>> The client sends the request for compression:
>>
>> Sec-WebSocket-Extensions: permessage-deflate; client_no_context_takeover;
>> client_max_window_bits\r\n
>>
>>
>> Webserver receives the client request,
>>
>>
>>
>> org.springframework.web.socket.server.support.AbstractHandshakeHandler.java:
>>
>> doHandshake function: try to see if requested extension is supported
>>
>> String subProtocol = selectProtocol(headers.getSecWebSocketProtocol(),
>> wsHandler);
>> List<WebSocketExtension> requested = headers.getSecWebSocketExtensions();
>> List<WebSocketExtension> supported =
>> this.requestUpgradeStrategy.getSupportedExtensions(request);
>> List<WebSocketExtension> extensions = filterRequestedExtensions(request,
>> requested, supported);
>>
>> getSupportedExtensions calls into the following function, which always
>> returns empty set for installed extensions.
>>
>> io.undertow.websockets.jsr.ServerWebSocketContainer.java:
>>
>>     public Set<Extension> getInstalledExtensions() {
>>         return Collections.emptySet();
>>     }
>>
>> My question is:
>> how to tell spring framework that the permessage-deflate extension is
>> supported by undertow?
>>
>> Environement:
>> Undertow 1.3.22 Final is used by springframework:
>> +-
>>
>> org.springframework.boot:spring-boot-starter-undertow:jar:1.3.5.RELEASE:compile
>> [INFO] |  |  +- io.undertow:undertow-core:jar:1.3.22.Final:compile
>> [INFO] |  |  +- io.undertow:undertow-servlet:jar:1.3.22.Final:compile
>> [INFO] |  |  +-
>> io.undertow:undertow-websockets-jsr:jar:1.3.22.Final:compile
>>
>>
>> Thanks
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> undertow-dev mailing list
>> undertow-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/undertow-dev


More information about the undertow-dev mailing list