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

浪尽此生 提交于 2019-12-10 04:33:30

问题


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.


回答1:


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.




回答2:


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"));
    }
}


来源:https://stackoverflow.com/questions/18097334/how-can-i-get-a-cookie-value-inside-websocket-end-point

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!