如何在websocket端点中获取cookie值

Ary*_*kat 6 cookies websocket java-ee-7

我在我的应用程序中使用基于JavaEE 7的Websocket-API.

我需要访问我的websocket端点中的cookie中设置的值[Annotated one : @ServerEndpoint ("/websocket") ].我该怎么办?

@onOpen()方法就在那里,当建立与此websocket端点的连接时,将自动调用该方法.我想在这个方法中访问那里的cookie值.

我知道如何在servlet或JSP中做到这一点,但我是Websockets的新手.

请帮我这样做.提前致谢.

gab*_*ouy 9

虽然Joakim的回答确实提供了正确方向的暗示,但我认为它并没有完全回答这个问题,或者至少可以补充.

为了检索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"));
    }
}
Run Code Online (Sandbox Code Playgroud)


Joa*_*elt 6

通过该@ServerEndpoint(configurator=MyConfigurator.class)技术访问请求参数.

请参阅有关如何访问HttpSession的其他答案,因为它的技术非常相似.