WebSocket获取httpSession空指针异常

176 阅读1分钟

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,则会创建不同的连接请求。

参考:
blog.csdn.net/csu_passer/…
www.cnblogs.com/zhuxiaojie/…