问题
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