小程序
小游戏
企业微信
微信支付
扫描小程序码分享
当小程序切换到后台websocket关闭连接,再次切换到前台的时候怎么让它重新连接,有大神可以说说嘛
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
正常情况下,小程序切换到后台 WebSocket 应该不会关闭,但我们为了让程序稳定,需要手动关闭WebSocket 连接,下次进入小程序后,重新建立连接。
参考以下代码:
// App.js App.js 用户小程序的运行时的生命周期,所以websocket 最好在App.js 中建立,保持连接,然后再其他页面用事件注册的方法来回调,仅供参考
function
createSocket() {
return
wx.connectSocket({
url: socketURL
});
}
App({
socketEvents: {},
onShow:
(options) {
var
it =
this
;
it.initSocket();
},
initSocket:
() {
it.socketTask = createSocket();
it.socketTask.onOpen(
(res) {
console.log(
"链接成功"
);
//维持心跳
it.heartInter = setInterval(
it.socketTask.send({
data: JSON.stringify({
type:
"ping"
})
}, 10000);
//非正常关闭socket后,重连
it.socketTask.onClose(
if
(res.code === 1000) {
setTimeout(
}, 5000);
// 注册消息回调事件
it.socketTask.onMessage(
resObj = JSON.parse(res.data);
(
typeof
it.socketEvents[resObj.event] ===
'function'
) {
it.socketEvents[resObj.event](resObj.data);
closeSocket:
.socketTask) {
.socketTask.close();
onHide:
.closeSocket();
//相关页面
var app=getApp();
Page({
//在页面显示时
onShow:function(){
app.socketEvents = {
"eventName":function(){console.log("我收到了一条消息");}
//在页面隐藏时
onHide:function(){
app.socketEvents={};
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
onShow 你重新连接一下不就可以了吗
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
正常情况下,小程序切换到后台 WebSocket 应该不会关闭,但我们为了让程序稳定,需要手动关闭WebSocket 连接,下次进入小程序后,重新建立连接。
参考以下代码:
// App.js App.js 用户小程序的运行时的生命周期,所以websocket 最好在App.js 中建立,保持连接,然后再其他页面用事件注册的方法来回调,仅供参考
function
createSocket() {
return
wx.connectSocket({
url: socketURL
});
}
App({
socketEvents: {},
onShow:
function
(options) {
var
it =
this
;
it.initSocket();
},
initSocket:
function
() {
var
it =
this
;
it.socketTask = createSocket();
it.socketTask.onOpen(
function
(res) {
console.log(
"链接成功"
);
//维持心跳
it.heartInter = setInterval(
function
() {
it.socketTask.send({
data: JSON.stringify({
type:
"ping"
})
});
}, 10000);
});
//非正常关闭socket后,重连
it.socketTask.onClose(
function
(res) {
if
(res.code === 1000) {
return
;
}
setTimeout(
function
() {
it.initSocket();
}, 5000);
});
// 注册消息回调事件
it.socketTask.onMessage(
function
(res) {
var
resObj = JSON.parse(res.data);
if
(
typeof
it.socketEvents[resObj.event] ===
'function'
) {
it.socketEvents[resObj.event](resObj.data);
}
});
},
closeSocket:
function
() {
if
(
this
.socketTask) {
this
.socketTask.close();
}
},
onHide:
function
() {
this
.closeSocket();
}
})
//相关页面
var app=getApp();
Page({
//在页面显示时
onShow:function(){
app.socketEvents = {
"eventName":function(){console.log("我收到了一条消息");}
}
},
//在页面隐藏时
onHide:function(){
app.socketEvents={};
}
})
onShow 你重新连接一下不就可以了吗