Jetty / javalin从websocket获取HttpSession始终返回null

时间:2018-08-17 14:33:06

标签: java jetty javalin

大家好,我正在使用javalin(使用jetty)并尝试获取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)+"");
    });          

1 个答案:

答案 0 :(得分:3)

HttpSession是HTTP功能。

一旦升级到WebSocket,您将不再是HTTP,因此不再是HttpSession

如果要从HttpSession获取信息,请在升级过程中获取HttpSession,然后从中获取所需的信息。因为一旦升级到WebSocket,该HttpSession就不再对该请求有效。

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