普通的onopen函数:
@OnOpen
public static void onOpen(Session session) {
sessions.set(session);
addOnlineCount();
sessionMap.put(session.getId(), session);
flag=1;
System.out.println("【" + session.getId() + "】连接上服务器======当前在线人数【" + getOnlineCount() + "】");
//连接上后给客户端一个消息
sendMsg(session, "连接服务器成功!");
timer(session);//定时器入口
}
1.获取httpsession的:
@OnOpen
public static void onOpen(Session session,EndpointConfig config) {
httpSession = (HttpSession) config.getUserProperties().get(HttpSession.class.getName());
//System.out.println("httpsession里的userid!"+httpSession.getAttribute("login_UserId"));
sessions.set(session);
addOnlineCount();
//sessionMap.put(session.getId(), session);//存的时候,把sessionid作为key,session是value。
sessionMap.put((httpSession.getAttribute("login_UserId")).toString(),session);//存的时候,把登陆者的userid作为key,session是value。
//System.out.println(session.getId()+"/session.getID和session/"+session);
System.out.println("【" + session.getId() + "】连接上服务器======当前在线人数【" + getOnlineCount() + "】");
//连接上后给客户端一个消息
//sendMsg(session, "连接服务器成功!");
flag=0;
int j;
j=0;
timer(session,j);//定时器入口
}
2.以及java文件的类名前修改成这样:
@ServerEndpoint(value = "/websocket", configurator = GetHttpSessionConfigurator.class)
@Component
public class websocket {
3.添加该文件:
package com.example.mobile_cd.websocket.config;
import javax.servlet.http.HttpSession;
import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
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;
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);
}
}
取httpsession值示例:
此时在前端登录时已经把loginid存入了httpsession了。
sessionMap.put((httpSession.getAttribute("login_UserId")).toString(),session);//存的时候,把登陆者的userid作为key,session是value。
版权声明:本文为qq_45128278原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。