// import socket from "@/utils/websocket.js" import config from "./config.js" import { getStorageSync } from "./common.js" let socket_api = `${config.socketUrl}:2000` // import io from '@/js_sdk/hyoga-uni-socket_io/uni-socket.io.js'; import io from '@hyoga/uni-socket.io'; import store from '@/store' import { decimalNum } from "./common.js" const nums = (arr = []) => { const att = arr.map(el => { return el[1] }) const num = Math.max.apply(null, att) arr.forEach(el => { let n = (el[1] / num * 100).toFixed(2); el[2] = n > 100 ? 100 : n; }) return arr } let socket = null const filtration = (msg) => { if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id == msg.currency_id) { return true } else { return false } } // closeSocket(); export const startSocket = (data) => { console.log('closeSocket 初始化') closeSocket(); socket = io(socket_api, { query: {}, transports: ['websocket', 'polling'], timeout: 5000, }); socket.on('connect', () => { socket.on('market_depth', (msg) => { if (filtration(msg)) { // console.log('market_depth = ' , msg) // 收到服务器推送的消息,可以跟进自身业务进行操作 // var buyIn = msg.bids.slice(0, 7); store.commit('websocket/set_bids', nums(msg.bids)) // var out = msg.asks.slice(0, 7); store.commit('websocket/set_asks', nums(msg.asks)) } }) socket.on('daymarket', (msg) => { // 收到服务器推送的消息,可以跟进自身业务进行操作 if (filtration(msg)) { store.commit('websocket/set_daymarket', msg) } }) socket.on('kline', (msg) => { // 收到服务器推送的消息,可以跟进自身业务进行操作 if (filtration(msg)) { console.log('kline = ' , msg , new Date().getTime()) const data = { // id:new Date().getTime(), // 时间戳 id:msg.time, // 时间戳 open:msg.open, close:msg.close, high:msg.high, low:msg.low, vol:msg.volume, amount:msg.amount, count:msg.count || 0, // id int 时间戳 // open float 开盘价 // close float 收盘价 // high float 最高价 // low float 最低价 // vol float 成交额,VOL副图需要用到该参数 // amount float 成交量,在选择器里面需要用到该参数 // count int 成交笔数,当前为预留字段,你那边没有这个数据的话传个0就行,但是不能不传 } } }) // socket.emit('login', getStorageSync('shareCode')); socket.on('lever_trade', (msg) => { // if (filtration(msg)) { // console.log('lever_trade 133 = ' , JSON.parse(msg.tradesList)) // const tradesList = JSON.parse(msg.tradesList) // const obj = Object.assign({} , msg , {tradesList:tradesList}) // store.commit('websocket/set_lever_trade', obj) // } const tradesList = JSON.parse(msg.tradesList) const obj = Object.assign({} , msg , {tradesList:tradesList}) store.commit('websocket/set_lever_trade', obj) }) }) return false if (socketObj[data.type]) { socketObj[data.type].disconnect(); socketObj[data.type] = null }; socketObj[data.type] = io(socket_api, { query: {}, transports: ['websocket', 'polling'], timeout: 5000, }); socketObj[data.type].on(data.type, (msg) => { if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id == msg.currency_id) { if (msg.type == 'market_depth') { // var buyIn = msg.bids.slice(0, 7); store.commit('websocket/set_bids', nums(msg.bids)) // var out = msg.asks.slice(0, 7); store.commit('websocket/set_asks', nums(msg.asks)) } if (msg.type == 'daymarket') { // state.daymarket = msg; store.commit('websocket/set_daymarket', msg) } } }); } export const closeSocket = () => { try { socket && socket.disconnect() socket = null; } catch {} }