利用反射获取websocket,session字段的值

发布时间:2024年01月14日

首先利用反射获取方法字段,然后取得字段的值

   private static ConcurrentHashMap<String, Session> map = new ConcurrentHashMap<>();

    @OnOpen
    public void onOpen(Session session) throws IllegalAccessException {
        log.info(session.getId() + "开始连接");
        map.put(session.getId(), session);
        for (String s : map.keySet()) {
            Session session1 = map.get(s);
            Class<? extends Session> sessionClass = session1.getClass();
            for (Field declaredField : sessionClass.getDeclaredFields()) {
                declaredField.setAccessible(true); // 设置私有字段可访问
                Object fieldValue = declaredField.get(session1);
                log.info("字段名:" + declaredField.getName() + ",字段值:" + fieldValue);
            }
        }
    }

获取的字段值

  • webSocketContainer:WebSocket容器,用于管理WebSocket连接。
  • requestUri:请求的URI,即WebSocket的URL。
  • requestParameterMap:请求的参数映射,包含从URL中提取的参数。
  • queryString:查询字符串,即URL中的参数部分。
  • userPrincipal:用户主体,表示与WebSocket连接关联的用户身份信息。
  • endpointConfig:端点配置,包含与WebSocket端点相关的配置信息。
  • negotiatedExtensions:协商的扩展,表示与客户端协商的WebSocket扩展。
  • subProtocol:子协议,表示与客户端协商的WebSocket子协议。
  • pathParameters:路径参数,包含从URL路径中提取的参数。
  • secure:是否使用安全连接(HTTPS)。
  • httpSessionId:HTTP会话ID,表示与WebSocket连接关联的HTTP会话ID。
  • id:连接ID,表示WebSocket连接的唯一标识符。
  • textMessageHandler:文本消息处理器,用于处理接收到的文本消息。
  • binaryMessageHandler:二进制消息处理器,用于处理接收到的二进制消息。
  • pongMessageHandler:Pong消息处理器,用于处理接收到的Pong消息。
  • state:连接状态,表示WebSocket连接的状态(如OPEN、CLOSED等)。
  • userProperties:用户属性,用于存储与WebSocket连接相关的自定义属性。
  • maxBinaryMessageBufferSize:最大二进制消息缓冲区大小。
  • maxTextMessageBufferSize:最大文本消息缓冲区大小。
  • maxIdleTimeout:最大空闲超时时间,表示在没有活动的情况下保持连接的最长时间。
  • lastActiveRead:上次读取活动的时间戳。
  • lastActiveWrite:上次写入活动的时间戳。
  • futures:未来对象,用于处理与WebSocket连接相关的异步操作。
  • wsFrame:WebSocket帧,表示当前正在处理的WebSocket帧。
文章来源:https://blog.csdn.net/weixin_55990599/article/details/135588109
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。