- 当前 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());
});
},
})
分享一下代码段
https://developers.weixin.qq.com/s/VJFMqXm27W9h
前台运行时会自动连接,进入后台后,过几秒,WebSocket 自动关闭,不是小程序销毁关闭的
当小程序进入后台,客户端会维持一段时间的运行状态,超过一定时间后(目前是5分钟)小程序会被微信主动销毁。将不再支持发送请求。https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/operating-mechanism.html,有问题可以提供下代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html