页面会有多个组件调用connectWs(),求分析报错的原因,有还需要了解可以留言,非常感谢。
Chrome报错:
火狐报错:
以下是public.js封装的方法
Vue.prototype.connectWs = function (subscribeArr) {
if (typeof (WebSocket) == undefined) return
if (ws == null || ws.readyState != 1) {
let profitOld = "--", rateProfitOld = "--";
ws = new WebSocket(store.state.wsUrl)
store.state.ws = ws;
ws.onopen = (ddd) => {
ws.send(wsLoginBag(this.$md5, subscribeArr));
wsInterval = setInterval(() => {
ws.send(JSON.stringify({command: 3}))
}, 6000)
}
if (localStorage.newPriceKey) {
newPrice = JSON.parse(localStorage.newPriceKey)
}
ws.onmessage = (e) => {
let data = JSON.parse(e.data);
let body = data.body
if (data.command == 11) {
ws.send(wsChangeDestine(subscribeArr));
return
}
if (data.command == 12) {
if (body && body.length > 0) {
body.forEach(item => {
//...
if (isNaN(parseFloat(profitOld))) {
profitOld = "--"
}
if (isNaN(parseFloat(rateProfitOld))) {
rateProfitOld = "--"
}
newPrice[item.symbol] = {
//...
}
this.resetSetItem("newPriceKey", JSON.stringify(newPrice))
})
}
}
if (data.command == 14) {
if (body.code == 0) return false;
let sd = newPrice[body.symbol];
if (!sd) return;
if (sd.yesterdayClose != 0) {
//...
if (isNaN(parseFloat(profitOld))) {
profitOld = "--"
}
if (isNaN(parseFloat(rateProfitOld))) {
rateProfitOld = "--"
}
}
//...
this.resetSetItem("newPriceKey", JSON.stringify(newPrice))
}
}
ws.onerror = (err) => {
clearInterval(this.wsInterval)
}
ws.onclose = (err) => {
clearInterval(this.wsInterval)
}
} else if(ws != null && ws.readyState == 1) {
ws.send(wsChangeDestine(subscribeArr));
}
}