Found the answer to my own question by finding this: http://www.massapi.com/source/github/20/06/200618196/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/websocket/BasicGuacamoleWebSocketTunnelEndpoint.java.html
So all I needed to do was add the subprotocols = {"guacamole"} value to the @ServerEndPoint anotation. On Tue, Sep 20, 2016 at 12:19 PM, Dogbert <virtualdogb...@gmail.com> wrote: > I'm trying to do a web-socket connection, but it's not working with > chrome(works in firefox). It might be my own issue, which Is why I did set > this to be a bug. I get this in response: > > guacamole.js?compile=false:10040 WebSocket connection to > 'ws://localhost:####/********/guacamole/websocket?port=####&password=*******&host=******' > failed: Error during WebSocket handshake: Sent non-empty > 'Sec-WebSocket-Protocol' header but no response was received > > I've seen people say that I have to set "subprotocol: 'base46', but I'm > not sure where I would set that for the web-socket, as that seems to be > created within guac somewhere. > > My current set-up in Grails3/SpringBoot is: > > @ServerEndpoint("/guacamole/websocket") > > class EndpointConfig extends GuacamoleWebSocketTunnelEndpoint implements > ServletContextListener { > > > > @Override > > void contextInitialized(ServletContextEvent sce) { > > ServletContext servletContext = sce.servletContext > > ServerContainer serverContainer = > servletContext.getAttribute("javax.websocket.server.ServerContainer") > > > > try { > > // This is necessary for Grails to add the endpoint in > development. > > // In production, the endpoint will be added by the > @ServerEndpoint > > // annotation. > > if (Environment.current == Environment.DEVELOPMENT) { > > serverContainer.addEndpoint(EndpointConfig) > > } > > serverContainer.defaultMaxSessionIdleTimeout = 0 > > } catch (IOException e) { > > log.error(e.message, e) > > } > > } > > > > @Override > > void contextDestroyed(ServletContextEvent sce) { > > > > } > > > > @Override > > protected GuacamoleTunnel createTunnel(Session session, > javax.websocket.EndpointConfig config) throws GuacamoleException { > > // Create our configuration TODO change for security after POC > > GuacamoleConfiguration guacConfig = new GuacamoleConfiguration() > > guacConfig.setProtocol("vnc") > > guacConfig.setParameter("hostname", > session.requestParameterMap.host[0]) > > guacConfig.setParameter("port", session.requestParameterMap.port[0]) > > guacConfig.setParameter("password", > session.requestParameterMap.password[0]) > > > > GuacamoleSocket socket = new ConfiguredGuacamoleSocket(new > InetGuacamoleSocket("localhost", ####), guacConfig) > > > > // Return a new tunnel which uses the connected socket > > return new SimpleGuacamoleTunnel(socket) > > } > > } > > I've looked at the sample client, but that is very tightly coupled into > it's own implementation, so I'm not sure if there is something I could take > from it. > > Thank you for reading, and any help you might be able to provide >