1

大家好,我正在使用 javalin(使用码头)并试图获取 HttpSession 但它总是返回 null !有没有更好的方法可以在没有上下文的情况下在 websockets 中获取 HttpSession?

    app.ws("/console",webSocketHandler -> {
           webSocketHandler.onConnect(wsSession -> {
               System.out.println(wsSession.getLocalAddress().getHostString() + " is Now Connected!");wsSession.send("ge");
           });
           webSocketHandler.onMessage((wsSession, s) -> {
               System.out.println((wsSession().getUpgradeRequest().getSession() == null)+"");
    });          
4

1 回答 1

3

HttpSession是一个 HTTP 功能。

一旦你升级到 WebSocket,你就不再是 HTTP,因此没有HttpSession.

如果您想从中HttpSession获取信息,请HttpSession在升级过程中获取,然后从中获取您需要的信息。因为一旦你升级到 WebSocket,那HttpSession对于那个请求就不再有效了。

在 Java 中,您可以使用 JettyWebSocketCreator或 JSR356来做到这一点Configurator

于 2018-08-17T14:56:33.600 回答