2013-08-07 14 views
6

Używam Websocket-API na podstawie JavaEE 7, w mojej aplikacji.Jak mogę uzyskać wartość cookie wewnątrz punktu końcowego websocket

Mam dostęp do wartości ustawionych w ciasteczkach w moim punkcie końcowym websocket [Annotated one : @ServerEndpoint ("/websocket") ]. Jak to zrobić? Jest dostępna metoda, która będzie wywoływana automatycznie po ustanowieniu połączenia z tym punktem końcowym websocket. Chcę uzyskać dostęp do wartości plików cookie w tej metodzie.

Wiem, jak to zrobić w serwletu lub JSP, ale jestem nowy w Websockets.

Proszę, pomóż mi to zrobić. Z góry dziękuję.

Odpowiedz

6

Dostęp do parametrów żądania odbywa się za pomocą techniki @ServerEndpoint(configurator=MyConfigurator.class).

Zobacz other answer on how to access the HttpSession, ponieważ jej techniki są bardzo podobne.

+0

To naprawdę wspaniałe. Mogę z powodzeniem pobrać HttpSession w sposób przedstawiony na ilustracji. Ale moim zamiarem jest pobieranie plików cookie, a nie HttpSession; Próbowałem tego samego scenariusza, ale nie udało mi się go zdobyć. 'this.httpCookie = (HttpSession) config.getUserProperties() .get (HttpCookie.class.getName());' Nie wiem, jak umieścić HttpCookie w EndPointConfig, przez metodę modifyHandshake() konfiguratora. Pomóż mi to zrobić. –

+0

To faktycznie nie odpowiada na oryginalne pytanie – gshauger

+0

@gshauger to było naprawdę duplikat pytania, stąd odniesienie do drugiej odpowiedzi na temat dostępu do HttpSession (gdzie Cookies są tradycyjnie dostępne z aplikacji JEE) –

8

Podczas gdy odpowiedź Joakima stanowi wskazówkę we właściwym kierunku, uważam, że nie odpowiada ona w pełni na pytanie, a przynajmniej może zostać uzupełniona.

Aby odzyskać wartość pliku cookie, należy pobrać nagłówki obiektu HandshakeRequest i wyszukać nagłówek o nazwie "cookie". Twoja implementacja modifyHandshake będzie wyglądać tak:

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")); 
    } 
} 
Powiązane problemy