Aryan Venkat
Aryan Venkat

Reputation: 689

How can I get a cookie value inside websocket end-point

I'm using Websocket-API based on JavaEE 7, in my application.

I'm required to access the values set in cookies inside my websocket endpoint [Annotated one : @ServerEndpoint ("/websocket") ]. How would I do that?

@onOpen() method is there, which will be called automatically when a connection to this websocket endpoint is established. I want to access cookies values in there, inside this method.

I know how to do that in a servlet or JSP, but I'm new to Websockets.

Please help me doing this. Thanks in advance.

Upvotes: 7

Views: 8897

Answers (2)

gabouy
gabouy

Reputation: 763

While Joakim's answer does provide a hint in the right direction I believe it does not fully answer the question, or at least can be complemented.

In order to retrieve the value of a cookie you must get the headers of the HandshakeRequest object, and look for the header named "cookie". Your modifyHandshake implementation will look something like:

public class MyEndpointConfigurator extends ServerEndpointConfig.Configurator {
    @Override
    public void modifyHandshake(ServerEndpointConfig config, 
                                HandshakeRequest request, 
                                HandshakeResponse response)
    {
        Map<String,List<String>> headers = request.getHeaders();
        config.getUserProperties().put("cookie",headers.get("cookie"));
    }
}

Upvotes: 10

Joakim Erdfelt
Joakim Erdfelt

Reputation: 49462

Access to request parameters is done via the @ServerEndpoint(configurator=MyConfigurator.class) technique.

See other answer on how to access the HttpSession, as its techniques are very similar.

Upvotes: 6

Related Questions