我觉得你可能思路有问题,onmessage应该只设置一次,一个connectobj本来就一直在并没有销毁,你多设置当然就多次触发了,所以可以把onmessage的设置也放到app中,再用回调触发。
App({
onLaunch: function () {
var connectobj = wx.connectSocket({
url: 'ws://xxx:xxxx'
});
connectobj.onMessage((data) => {
var pages = getCurrentPages();
var currentPage = pages[pages.length - 1];
if (currentPage.onMessage) currentPage.onMessage(data);
});
}
})
page({
data: {
sData: {}
},
onLoad: function () {
},
onMessage: function (data) {
this.setData({ sData: data });
}
})
App({
onLaunch: function () {
var connectobj = wx.connectSocket({
url: 'ws://xxx:xxxx'
});
connectobj.onMessage((data) => {
if (this.onMessage) this.onMessage(data);
});
}
})
const app = getApp();
page({
data: {
sData: {}
},
onLoad: function () {
app.onMessage = (data) => {
this.setData({ sData: data });
}
},
onUnload: function () {
app.onMessage = null;
}
})