首页 > 代码库 > 如何在WebSocket类中访问Session
如何在WebSocket类中访问Session
我最近正在做一个基于websocket的webQQ,最后代码会开源带github上,所以过程中我就不贴所有的代码啦~就贴问题的关键。
首先先搞清一个流程:WebSocket在建立连接时第一步其实是以HTTP协议的面目进行握手的:
1.客户端发送websocket请求,此时发送的还是http包。
2.如果服务器支持websocket,那么就将http转变为websocket。
3.此时连接建立,服务器和客户端可以双向实时进行通信。
那么我们该怎么拿到HttpSession呢?观察上面整个过程发现只有在第一步的时候才能得到,于是乎websocket给了我们一个方法介入websocket初始化的过程。
首先要继承ServerEndpointConfig,并实现 modifyHandshake方法:
import javax.servlet.http.HttpSession;import javax.websocket.HandshakeResponse;import javax.websocket.server.HandshakeRequest;import javax.websocket.server.ServerEndpointConfig; public class GetHttpSessionConfigurator extends ServerEndpointConfig.Configurator{ @Override public void modifyHandshake(ServerEndpointConfig config, HandshakeRequest request, HandshakeResponse response) { HttpSession httpSession = (HttpSession)request.getHttpSession(); config.getUserProperties().put(HttpSession.class.getName(),httpSession); }}
然后在实现ServerEndPoint时,增加configurator的参数,再这样获取即可:
HttpSession httpSession = (HttpSession) config.getUserProperties()
.get(HttpSession.
class
.getName());
如何在WebSocket类中访问Session
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。