国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

js close()無法關(guān)閉鏈接

張三
var heartbeat,
    ws = new WebSocket(url);
ws.onopen = function(e){
    heartbeat = setInterval(function(){
        ws.send({type:'heartbeat'});
    },3e4);
    plugin.emit('live.onopen', e, heartbeat);
},
    ws.onerror = function(e){
    plugin.emit('live.onerror',JSON.parse(e.data));
},
    ws.onmessage = function(e){
    plugin.emit('live.onmessage',JSON.parse(e.data));
},
    ws.onclose = function(e){
    plugin.emit('live.onclose',e);
};
return ws;

調(diào)用ws.close(); 鏈接依舊存在,執(zhí)行close也沒有報錯

1965 1 0
1個回答

walkor 打賞

打日志看下ws.close()是否真的被調(diào)用到。
還有你是怎么判定調(diào)用了ws.close()后沒有關(guān)閉連接?

  • 張三 2021-12-01

    ws.close()系統(tǒng)函數(shù),沒辦法查看是否被真的調(diào)用,但是調(diào)用沒有報錯,就應(yīng)該是調(diào)用了。執(zhí)行ws.close()后,再次去執(zhí)行連接websocket,會報錯WebSocket is already in CLOSING or CLOSED state.

  • 張三 2021-12-01

    看起來其實應(yīng)該已經(jīng)是關(guān)閉了,但是重新執(zhí)行上面的代碼來重連接,就會報這個錯誤。

  • walkor 2021-12-01

    這說明連接已經(jīng)關(guān)閉了。連接關(guān)閉了就不能再調(diào)用ws.send了,否則會有這個報錯。比如連接關(guān)閉了要把你js里定時發(fā)送心跳的定時器刪除,它引用的ws仍然是舊的連接對象,連接端口后定時器仍然執(zhí)行 ws.send({type:'heartbeat'}); 的時候就會出現(xiàn)WebSocket is already in CLOSING or CLOSED state.這個錯誤了。onclose的時候你要把定時器刪除

年代過于久遠,無法發(fā)表回答
??