websocket.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. // import socket from "@/utils/websocket.js"
  2. import config from "./config.js"
  3. import { getStorageSync } from "./common.js"
  4. let socket_api = `${config.socketUrl}:2000`
  5. // import io from '@/js_sdk/hyoga-uni-socket_io/uni-socket.io.js';
  6. import io from '@hyoga/uni-socket.io';
  7. import store from '@/store'
  8. import {
  9. decimalNum
  10. } from "./common.js"
  11. const nums = (arr = []) => {
  12. const att = arr.map(el => {
  13. return el[1]
  14. })
  15. const num = Math.max.apply(null, att)
  16. arr.forEach(el => {
  17. let n = (el[1] / num * 100).toFixed(2);
  18. el[2] = n > 100 ? 100 : n;
  19. })
  20. return arr
  21. }
  22. let socket = null
  23. const filtration = (msg) => {
  24. if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
  25. msg.currency_id) {
  26. return true
  27. } else {
  28. return false
  29. }
  30. }
  31. // closeSocket();
  32. export const startSocket = (data) => {
  33. console.log('closeSocket 初始化')
  34. closeSocket();
  35. socket = io(socket_api, {
  36. query: {},
  37. transports: ['websocket', 'polling'],
  38. timeout: 5000,
  39. });
  40. socket.on('connect', () => {
  41. socket.on('market_depth', (msg) => {
  42. if (filtration(msg)) {
  43. // console.log('market_depth = ' , msg)
  44. // 收到服务器推送的消息,可以跟进自身业务进行操作
  45. // var buyIn = msg.bids.slice(0, 7);
  46. store.commit('websocket/set_bids', nums(msg.bids))
  47. // var out = msg.asks.slice(0, 7);
  48. store.commit('websocket/set_asks', nums(msg.asks))
  49. }
  50. })
  51. socket.on('daymarket', (msg) => {
  52. // 收到服务器推送的消息,可以跟进自身业务进行操作
  53. if (filtration(msg)) {
  54. store.commit('websocket/set_daymarket', msg)
  55. }
  56. })
  57. // socket.on('kline', (msg) => {
  58. // // 收到服务器推送的消息,可以跟进自身业务进行操作
  59. // if (filtration(msg)) {
  60. // console.log('kline = ' , msg , new Date().getTime())
  61. // const data = {
  62. // // id:new Date().getTime(), // 时间戳
  63. // id:msg.time, // 时间戳
  64. // open:msg.open,
  65. // close:msg.close,
  66. // high:msg.high,
  67. // low:msg.low,
  68. // vol:msg.volume,
  69. // amount:msg.amount,
  70. // count:msg.count || 0,
  71. // // id int 时间戳
  72. // // open float 开盘价
  73. // // close float 收盘价
  74. // // high float 最高价
  75. // // low float 最低价
  76. // // vol float 成交额,VOL副图需要用到该参数
  77. // // amount float 成交量,在选择器里面需要用到该参数
  78. // // count int 成交笔数,当前为预留字段,你那边没有这个数据的话传个0就行,但是不能不传
  79. // }
  80. // }
  81. // })
  82. socket.emit('login', getStorageSync('shareCode'));
  83. socket.on('lever_trade', (msg) => {
  84. // if (filtration(msg)) {
  85. // console.log('lever_trade 133 = ' , JSON.parse(msg.tradesList))
  86. // const tradesList = JSON.parse(msg.tradesList)
  87. // const obj = Object.assign({} , msg , {tradesList:tradesList})
  88. // store.commit('websocket/set_lever_trade', obj)
  89. // }
  90. const trades_all = JSON.parse(msg.trades_all)
  91. console.log('kline = ' , trades_all )
  92. const obj = Object.assign({} , msg , {tradesList:trades_all})
  93. store.commit('websocket/set_lever_trade', obj)
  94. })
  95. })
  96. return false
  97. if (socketObj[data.type]) {
  98. socketObj[data.type].disconnect();
  99. socketObj[data.type] = null
  100. };
  101. socketObj[data.type] = io(socket_api, {
  102. query: {},
  103. transports: ['websocket', 'polling'],
  104. timeout: 5000,
  105. });
  106. socketObj[data.type].on(data.type, (msg) => {
  107. if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
  108. msg.currency_id) {
  109. if (msg.type == 'market_depth') {
  110. // var buyIn = msg.bids.slice(0, 7);
  111. store.commit('websocket/set_bids', nums(msg.bids))
  112. // var out = msg.asks.slice(0, 7);
  113. store.commit('websocket/set_asks', nums(msg.asks))
  114. }
  115. if (msg.type == 'daymarket') {
  116. // state.daymarket = msg;
  117. store.commit('websocket/set_daymarket', msg)
  118. }
  119. }
  120. });
  121. }
  122. export const closeSocket = () => {
  123. try {
  124. socket && socket.disconnect()
  125. socket = null;
  126. } catch {}
  127. }