客户端调用 gameSocket.close() 了?
小程序客户端触发onClose方法后,服务端完全接受不到目前我们小程序开发中有遇到一个比较严重的关于 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, 然后服务端就不知道这个客户端已经断开了。 这个问题比较严重,希望可以协助解决。
2018-07-13