收藏
回答

WebSocket在小程序隐藏后关闭的问题

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug WebSocket 客户端 7.0.5 2.7.7

- 当前 Bug 的表现(可附上截图)


 在app.js里 每隔3秒 检查websocket断开连接的话重新连接

上图显示,app调用onShow 后,websocket连接成功

            app调用onHide后 自动断开连接

           我把 小程序打开后,又自动连接上了


- 预期表现

    希望小程序后台运行时,已连接的 WebSocket  保持连接,继续工作.

- 复现路径


- 提供一个最简复现 Demo

//app.js  

App({

globalData: {

localSocket:{}

},

getWsState:function(){  //获取WS状态

//readyState的状态有4种,0表示connecting正在链接,

//1则表示open已经链接,2则表示closing,正在关闭,3表示closed已经关闭

var state=-1;

if (this.globalData.localSocket.readyState != undefined){

state = this.globalData.localSocket.readyState;

}

return state;

},

//小程序初始化完成时触发

onLaunch: function () {

setInterval(this.jhr_ws_connect,3000);

},

onShow:function(){

console.log("app.onShow:" + this.getWsState());

},

onHide:function(){

console.log("app.onHide:" + this.getWsState());

},

//链接 WS

jhr_ws_connect:function(){

var that=this;

if(this.getWsState()== 1){return;}

that.globalData.localSocket = wx.connectSocket({

url: 'ws://192.168.1.122:10006'

});

that.globalData.localSocket.onOpen(function (res) {

console.log("globalData.localSocket.onOpen:" + that.getWsState());

});

that.globalData.localSocket.onClose(function (res) {

console.log("globalData.localSocket.onClose:"+ that.getWsState());

});

},

})


回答关注问题邀请回答
收藏

2 个回答

登录 后发表内容