小程序客户端触发onClose方法后,服务端完全接受不到
发布于 5 年前 作者 yang69 4815 次浏览 来自 问答

目前我们小程序开发中有遇到一个比较严重的关于 websocket 的问题。

当我们客户端在使用 websocket 的时候,遇到一个比较大的问题:当客户端收到 onClose 方法的时候,服务端并没有收到我们的 onClose 消息。下面是我们的示例代码。

function connectWebsocket(self,type) {
  let token = wx.getStorageSync('token');
  let socketUrl = `${URL.WEBSOCKET_HOST}/vfour/echo_once/?params=${token}`;
  var gameSocket = wx.connectSocket({ url: socketUrl });
  socketFlow(type);
 
  //整个websocket流程
  function socketFlow(type) {
    gameSocket.onOpen(function() {
      console.log('-------Websocket onSocketOpen---------');
    })
    gameSocket.onMessage(function(res) {
      console.log(res);
      console.log('-------Websocket onSocketMessage---------');
    })
    gameSocket.onClose(function(res) {
      gameSocket = null;
      console.log('-------Websocket onSocketClose---------');
    }
      console.log(self.$store.state.connectSocketNum,'-------------------',res);
    })
  }
}

现在就导致比如客户端关闭 wifi, 然后服务端就不知道这个客户端已经断开了。

这个问题比较严重,希望可以协助解决。

2 回复

确实有这个问题。除非知道用户什么时候切换网络,否则一旦变更网络,websocket就会断开。

客户端调用 gameSocket.close() 了?

回到顶部