WebSocket获取httpSession空指针异常
由于HTTP协议与websocket协议的不同,导致没法直接从websocket中获取协议,会报空指值异常,因为这个HttpSession并没有设置进去。
设置HttpSession。需要写一个监听器。
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
@Component
public class RequestListener implements ServletRequestListener {
public void requestInitialized(ServletRequestEvent sre) {
//将所有request请求都携带上httpSession
((HttpServletRequest) sre.getServletRequest()).getSession();
}
public RequestListener() {
}
public void requestDestroyed(ServletRequestEvent arg0) {
}
}
但是未果
核心原因:
这个空指针异常的根源并不是出在后端代码上。
localhost和127.0.0.1其实并不是同一个连接,
在前端连接WebSocket的时候,代码是这样的:
("ws://127.0.0.1/xxx/xxx");
浏览器地址栏是这样的:
http://localhost:8080/
如果不使用同一个host,则会创建不同的连接请求。