大家好,我正在使用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)+"");
});
答案 0 :(得分:3)
HttpSession
是HTTP功能。
一旦升级到WebSocket,您将不再是HTTP,因此不再是HttpSession
。
如果要从HttpSession
获取信息,请在升级过程中获取HttpSession
,然后从中获取所需的信息。因为一旦升级到WebSocket,该HttpSession
就不再对该请求有效。
在Java中,您可以使用Jetty WebSocketCreator
或JSR356 Configurator
来做到这一点。