前端 websocket 关闭 ws.close()的问题

之前没怎么用过websocket ,这次供应商决定用这个, 我这里是客户端,我查了点资料,websocket 断开连接好像是两种方式,一种是客户端发出请求给服务器,服务器响应关闭,

var ws=new WebSocket("ws://127.0.0.1:8000");
ws.onopen=function(){
  ws.close(); 
};
ws.onclose=function(e){
  console.log(e);
};

或者服务端按照一定的逻辑,比如 返回数据时发送close, 客户端在onclose里关闭,

var ws=new WebSocket("ws://127.0.0.1:8000");
ws.onclose=function(e){
  console.log(e);
  ws.close(); //关闭TCP连接
};

刚开始都不主动关闭,就是不用 ws.close()关闭,虽然好像会自动关闭,但是好像一个没有断开,再发送第二个会出问题,如果我不知道服务端会不会主动关闭, 我在onopen和 onclose 里面都写 ws.close() 会不会出问题??????

阅读 39k
3 个回答

还有一点要注意,你要定时给服务端发送心跳数据包证明客户端存活

这个跟后台的websocket代码有关

正常来说:离开页面websocket就会自动断开

vue 也可以在destroy生命周期里面调用 websock.close() 手动关闭

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题