According to RFC6455 Section 4.3. the handling of subprotocol requests is not correct. It must be checked for "Sec-WebSocket-Protocol" instead of "Sec-WebSocket-Protocol-Client" in WebSocketServlet class.
Fixed in trunk and 7.0.x and will be included in 7.0.30 onwards. Thanks for the report.
Thanks a lot! By the way, here is workaround for those who can't wait: Just add the following code into your WebsocketServlet: @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(req){ @Override public Enumeration<String> getHeaders(String name) { if(name.equals("Sec-WebSocket-Protocol-Client")){ return super.getHeaders("Sec-Websocket-Protocol"); } return super.getHeaders(name); } }; super.doGet(wrapper, resp); }