使用tomcat8写了个webSocket聊天室,出现如下异常 10C

图片说明
如图,在本地运行无异常,上传至阿里云服务器后开始时无异常,等待一段时间(推测是session timeout后)出现如图异常

package com.project.webSocket;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;
import javax.websocket.EndpointConfig;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.project.service.Manager;
import com.project.service.impl.ManagerImpl;
import com.project.utils.GetHttpSessionConfigurator;

//@ServerEndpoint注解表示将 WebSocket服务端运行在 以ws://开头的访问端点
@ServerEndpoint(value = "/SocketServer",configurator = GetHttpSessionConfigurator.class)
public class SocketServer{
private static final long serialVersionUID = 1L;
//将httpSession,socketSession放在一个map里,代表一个用户
private static final HashMap onlineUsers = new HashMap();
private static int onlineCount = 0;
//定义客服人员的名字(对应cookie--user_id)
private static String customerService1 = "A002";
private static String customerService2 = "A003";
private HttpSession httpSession;
/**
* WebSocket Session
*/
private Session session;

//使用 ServerEndpoint 注释的类必须有一个公共的无参数构造函数
public SocketServer() {
}

/**
 * 打开连接
 * 
 * @param session
 */
@OnOpen
public void onOpen(Session session,EndpointConfig config) {
    this.session = session;
    this.httpSession = (HttpSession)config.getUserProperties().get(HttpSession.class.getName());
    httpSession.setMaxInactiveInterval(60000);
    if(httpSession.getAttribute("user") != null){
        onlineUsers.put(httpSession, this);
    }
    addOnlineCount();
    System.out.println("++++当前人数" + onlineUsers.size());
    System.out.println(httpSession.getAttribute("user"));
}

/**
 * 关闭连接
 */
@OnClose
public void onClose() {
    onlineUsers.remove(httpSession,this);//从map中删除
    subOnlineCount();
    System.out.println("----当前人数" + onlineUsers.size());
}

     /**
 * 错误信息响应
 * 
 * @param throwable
 */
@OnError
public void onError(Throwable throwable) {
    System.out.println("连接异常");
    System.out.println(throwable.getMessage());
}


    请问是什么问题造成的?
0

1个回答

客户端也需要设置session过期时间的

0
jiexianerzou
jiexianerzou 能详细讲一下吗
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!