netty-websocket-spring-boot-starter
netty-websocket-spring-boot-starter copied to clipboard
使用过程中遇到的问题
1、发送消息终端软件收不到,偶发。ConcurrentHashMap存储终端编号与Channel关系。 2、服务器与终端软件心跳自动断开,偶发。 onOpen { timer.schedule(new TimerTask() { Integer countPong = countPongMap.get(sessionId); if (countPong == null) { log.info("已经关闭连接!"); this.cancel(); return; } if(countPong >= 11) { log.info("没有回应心跳信息十一次关闭连接"); onClose(session); this.cancel(); return; } else if (countPong != 0) { log.info("没有回应心跳信息,补发心跳"); } countPongMap.put(sessionId,countPong+1); session.sendText(NetworkConstant.HEART_CHECK); } } onMessage{ if(StringUtils.isNotBlank(message) && StringUtils.containsIgnoreCase(message, NetworkConstant.HEART_CHECK)){ // isPong = true; // countPong = 0; String sessionId = session.id().asShortText(); countPongMap.put(sessionId, 0); } }
timer间隔多久 通常建议在客户端来做心跳,减少服务端压力