首先說一下報錯原因,由于默認60s無消息交互就會關(guān)閉長連接,所以導致這個報錯
解決方案其實也很簡單,既然是長時間沒有通信導致斷開,其實保持通信就好,可以設(shè)置心跳時間來解決。
可以前端也可以后端,附上前端代碼吧文章來源:http://www.zghlxwxcb.cn/news/detail-475653.html
//心跳檢測
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(){
? ? ? ? ? ? //這里發(fā)送一個心跳,后端收到后,返回一個心跳消息,
? ? ? ? ? ? //onmessage拿到返回的心跳就說明連接正常
? ? ? ? ? ? websocket.send("HeartBeat");
? ? ? ? ? ? self.serverTimeoutObj = setTimeout(function(){//如果超過一定時間還沒重置,說明后端主動斷開了
? ? ? ? ? ? ? ? websocket.close();//如果onclose會執(zhí)行reconnect,我們執(zhí)行ws.close()就行了.如果直接執(zhí)行reconnect 會觸發(fā)onclose導致重連兩次
? ? ? ? ? ? }, self.timeout)
? ? ? ? }, this.timeout)
? ? }
}
?文章來源地址http://www.zghlxwxcb.cn/news/detail-475653.html
到了這里,關(guān)于websocket鏈接斷開服務(wù)器報錯java.io.EOFException解決辦法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!