Atmosphere-Tomcat 9 "Websocket protocol not supported"

Project Setup:
Vaadin 14
Atmosphere 2.4.30
Spring-boot 2.1.7.RELEASE
Apache HTTP Server 2.4.6
Apache Tomcat 9.0.0.M17

The problem seems to be similar to what is described here However, it is unclear from this thread alone as to what the solution is precisely (to me at least).

When deployed on a Apache HTTP 2.4.6/Tomcat 9 server, the response is the following…

Status Code: 501

X-Atmosphere-error: Websocket protocol not supported
X-Atmosphere-first-request: true
X-Atmosphere-tracking-id: 271505d9-1568-457f-956a-8fa4859ac2af

The websocket is not established and transport method defaults back to long-polling causing hanging in the application.

When run locally through Maven using mvn spring-boot:run, however…

Status Code: 101

Sec-WebSocket-Accept: VMFwwHCXbLeJqSbJJK1IrRWtgq0=
Sec-WebSocket-Extensions: permessage-deflate
Upgrade: websocket

So when run locally the issues can not be replicated, which led me to believe it was an issue with the Tomcat configuration.

Our root Vaadin RouterLayout has been annotated with @Push, no further push configurations have been applied. I did at one point attempt to configure a servlet manually to see if this would have an effect.

At this point, I gather that I should be registering an endpoint for websocket upgrade requests, some more detailed guidance as to how to do this would be appreciated.


When deployed on a Apache HTTP 2.4.6

Have you configured WebSocket routings and connection upgrade also in Apache? Otherwise it only passes http traffic to Tomcat and Atmosphere will fallback to long polling, since that is http.