当前位置: 首页 > 工具软件 > ws.io > 使用案例 >

websocket链接断开服务器报错java.io.EOFException解决办法

桓修能
2023-12-01

首先说一下报错原因,由于默认60s无消息交互就会关闭长连接,所以导致这个报错

解决方案其实也很简单,既然是长时间没有通信导致断开,其实保持通信就好,可以设置心跳时间来解决。

可以前端也可以后端,附上前端代码吧

//心跳检测
var heartCheck = {
    timeout: 60000,//60秒
    timeoutObj: null,
    serverTimeoutObj: null,
    reset: function(){
        clearTimeout(this.timeoutObj);
        clearTimeout(this.serverTimeoutObj);
        return this;
    },
    start: function(){
        var self = this;
        this.timeoutObj = setTimeout(function(){
            //这里发送一个心跳,后端收到后,返回一个心跳消息,
            //onmessage拿到返回的心跳就说明连接正常
            websocket.send("HeartBeat");
            self.serverTimeoutObj = setTimeout(function(){//如果超过一定时间还没重置,说明后端主动断开了
                websocket.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
            }, self.timeout)
        }, this.timeout)
    }
}
 

 类似资料: