Как я могу получить значение cookie внутри конечной точки веб-сокета

Я использую Websocket-API на основе JavaEE 7 в своем приложении.

Мне необходимо получить доступ к значениям, установленным в файлах cookie внутри моей конечной точки веб-сокета [Annotated one : @ServerEndpoint ("/websocket") ]. Как бы я это сделал?

@onOpen(), который будет вызываться автоматически, когда будет установлено соединение с этой конечной точкой веб-сокета. Я хочу получить доступ к значениям файлов cookie внутри этого метода.

Я знаю, как это сделать в сервлете или JSP, но я новичок в Websockets.

Пожалуйста, помогите мне сделать это. Заранее спасибо.


person Aryan Venkat    schedule 07.08.2013    source источник


Ответы (2)


Доступ к параметрам запроса осуществляется по технологии @ServerEndpoint(configurator=MyConfigurator.class).

См. другой ответ о том, как получить доступ к HttpSession, так как его методы очень похожи.

person Joakim Erdfelt    schedule 07.08.2013
comment
Это действительно замечательно. Я могу успешно получить HttpSession, используя способ, который вы проиллюстрировали. Но я намерен получить файлы cookie, а не HttpSession; Я пробовал тот же сценарий, но не смог его получить. 'this.httpCookie = (HttpSession) config.getUserProperties() .get(HttpCookie.class.getName());' Я не знаю, как поместить этот HttpCookie в EndPointConfig с помощью метода ModifyHandshake() конфигуратора. Помогите мне сделать это. - person Aryan Venkat; 07.08.2013
comment
Это на самом деле не отвечает на исходный вопрос - person gshauger; 24.07.2014
comment
@gshauger это был действительно дублирующий вопрос, отсюда и ссылка на другой ответ о доступе к HttpSession (откуда традиционно осуществляется доступ к файлам cookie в приложениях JEE) - person Joakim Erdfelt; 29.07.2014
comment
@JoakimErdfelt Спасибо за ссылку на другой ответ. Там масса информации. - person isapir; 12.09.2016

Хотя ответ Йоакима дает подсказку в правильном направлении, я считаю, что он не полностью отвечает на вопрос или, по крайней мере, может быть дополнен.

Чтобы получить значение файла cookie, вы должны получить заголовки объекта HandshakeRequest и найти заголовок с именем «cookie». Ваша реализация ModifyHandshake будет выглядеть примерно так:

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"));
    }
}
person gabouy    schedule 16.04.2015