websocket之获取httpsession 由于websocket与http协议的不同,故在使用常用的httpsession方面就存在了一些问题。通过google翻阅到了在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) { // todo auto-generated method stub 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); }