使用websocket连接向前端不定期推送数据,但是时常会连接断开,网上说是需要心跳机制,于是让前端增加了向后端10s一次的心跳,增加心跳后,发现在几分钟左右,会不定期报java.io.EOFException: null,然后连接断开,有人说是因为没有配置异常处理,于是增加了异常处理的方法:

@OnError
    public void onError(Session session,Throwable t) {
//        e.printStackTrace();
        logger.info("异常情况处理:"+session.getId());
        try {
            boolean open = session.isOpen();
            if(open){
                session.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
            logger.error(e.getMessage(),e);
        }
        logger.error(t.getMessage(),t);
    }

增加了之后还是会时常抛出这个问题,于是增加了后台向前端的心跳,最终解决了!

@OnMessage
    public void onMessage(String message, Session session)

在此方法中,当接收到前端发送的心跳后,回应一下,就没有再出现这个问题,不知道原理如果有懂的希望可以解答一下.

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐