您的位置:首页 > 理论基础 > 计算机网络

Tomcat下WebSocket获取HttpSession

2016-11-02 09:35 155 查看
WebSocket 与 Http协议的不同,因此在使用 HttpSession 方面就存在一些问题。在onOpen方法下调用HttpSession的方法。

新建一个GetHttpSessionConfigurator类并继承Configurator类

package per.zww.web;

import javax.servlet.http.HttpSession;
import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import javax.websocket.server.ServerEndpointConfig.Configurator;
/*
* 获取HttpSession
*/

public class GetHttpSessionConfigurator extends Configurator {

@Override
public void modifyHandshake(ServerEndpointConfig sec,
HandshakeRequest request, HandshakeResponse response) {
HttpSession httpSession=(HttpSession) request.getHttpSession();
sec.getUserProperties().put(HttpSession.class.getName(),httpSession);
}

}


在@ServerEndpoint 注解里面添加 configurator 属性

@ServerEndpoint(value="/socketTest",configurator=GetHttpSessionConfigurator.class)


在onOpen方法里加入参数EndpointConfig config即可获取HttpSession

   @OnOpen
public void onOpen(Session session,EndpointConfig config) {
HttpSession httpSession= (HttpSession) config.getUserProperties().get(HttpSession.class.getName());
System.out.println( httpSession.getAttribute("name"));
sessionMap.put(session.getId(), session);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  websocket