spring websocket 获取httpsession
来源:互联网 发布:好看的剧情电影 知乎 编辑:程序博客网 时间:2024/06/06 08:55
按照spring websocket的教材搭建了一个websocket的测试程序,但是自定义的HandshakeInterceptor 类型拦截器,始终获取不到httpsession,如下图,获取到得httpsession始终为null,
public class WebSocketHandshakeInterceptor implements HandshakeInterceptor { private static Log logger = LogFactory.getLog(HandshakeInterceptor.class); @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object > attributes) throws Exception { logger.debug("beforeHandshake start....."); logger.debug(request.getClass().getName()); if (request instanceof ServletServerHttpRequest) { ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; HttpSession session = servletRequest.getServletRequest().getSession(false); if (session != null) { //使用userName区分WebSocketHandler,以便定向发送消息 String userName = (String) session.getAttribute(Constants.SESSION_USERNAME); logger.info(userName+" login"); attributes.put(Constants.WEBSOCKET_USERNAME,userName); }else{ logger.debug("httpsession is null"); } } return true; } @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { }}
查看浏览器的http请求
发现websocket的握手请求没有携带cookie信息,没有cookie。。。 就没有sessionId,那服务器怎么可能识别到是哪个httpsession呢,
所以在websocket链接后加上jsessionid,这样服务器就可以根据sessionid获取到httpsession了,
http://10.10.10.107:8080//maven/webSocketServer;jsessionid=132CCDB1006D2A5CA1002368647D3672
虽然url携带jsessionid是个不太安全的做法,但是无奈只想到这种方式处理,姑且用之,
哪位大神有更加可靠的方式,望指点,不胜感激。
附上源代码,代码在tomcat8下测试通过
源码下载
1 1
- spring websocket 获取httpsession
- WebSocket之获取HttpSession
- webSocket获取HttpSession
- webSocket获取httpSession
- WebSocket之获取HttpSession
- java WebSocket 获取httpSession
- Tomcat下WebSocket获取HttpSession
- websocket @ServerEndpoint注解形式开发 @OnOpen 如何获取httpSession
- WebSocket获取httpSession空指针异常的解决办法
- WebSocket将httpsession作为参数
- spring websocket让页面实时获取数据
- axis中获取HttpSession
- 在spring3.2.0+hibernate3.3.2+struts2 2.2.3中使用websocket,运行环境是tomcat8.0.36,获取HttpSession
- webcoket 做聊天 && websocket 访问HttpSession
- Spring WebSocket
- spring websocket
- spring websocket
- WebSocket Spring
- SQL查询区分大小写方法
- MYSQL 优化常用方法
- 线程通信之无锁队列
- 标准linu休眠和唤醒机制分析(三)
- android性能优化
- spring websocket 获取httpsession
- Spring mvc中的登录界面
- JAVA工程笔记:SWT控件学习之Combo
- TextView/EditText
- Android编程开发规范
- Android导出应用数据库
- Android 完整生命周期
- 第16周SHH数据结构-【项目1-验证算法(3)冒泡排序 】
- Grub2被曝登陆验证绕过0Day,影响众多Linux版本(CVE-2015-8370)