In unsuccessful connection.pcapng the response from the server is ...
HTTP/1.1 101 Switching Protocols
Date: Mon, 18 Mar 2019 17:04:47 GMT
Connection: Upgrade
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Upgrade: WebSocket
Date: Mon, 18 Mar 2019 17:04:47 GMT
Sec-WebSocket-Accept: 2ehI1RO+UMwBNHwQJy91/GWGaJA=
Content-Type: application/json;charset=utf-8
This is a very strange response.
The `Cache-Control`, `Expires`, and `Content-Type` headers are not produced by the Jetty WebSocket implementation.
Do you have some kind of Filter that adds those headers?
If so, you'll need to make sure that Filter is "upgrade aware" and not do anything to the request/response if it detects a Upgrade being attempted.
This includes setting headers, wrapping the request or response, or attempting to access/control the request.inputStream/reader or response.outputStream/writer.
You can make your Filter "upgrade aware" by testing the request headers for "Connection: upgrade" (the value is case insensitive)