7

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

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

@onOpen()方法在那里,当建立到这个 websocket 端点的连接时会自动调用它。我想在此方法中访问其中的 cookie 值。

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

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

4

2 回答 2

10

虽然 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"));
    }
}
于 2015-04-16T19:33:31.620 回答
6

对请求参数的访问是通过该@ServerEndpoint(configurator=MyConfigurator.class)技术完成的。

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

于 2013-08-07T11:52:20.193 回答