websocket.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. // import socket from "@/utils/websocket.js"
  2. import config from "./config.js"
  3. let socket_api = `${config.socketUrl}:2000`
  4. // import io from '@/js_sdk/hyoga-uni-socket_io/uni-socket.io.js';
  5. import io from '@hyoga/uni-socket.io';
  6. import store from '@/store'
  7. import {
  8. decimalNum
  9. } from "./common.js"
  10. const nums = (arr = []) => {
  11. const att = arr.map(el => {
  12. return el[1]
  13. })
  14. const num = Math.max.apply(null, att)
  15. arr.forEach(el => {
  16. let n = (el[1] / num * 100).toFixed(2);
  17. el[2] = n > 100 ? 100 : n;
  18. })
  19. return arr
  20. }
  21. export const startSocketkkk = () => {
  22. const socket = io(socket_api);
  23. console.log('ws startSocketkkk ', socket);
  24. socket.on('connect', () => {
  25. console.log('ws 已连接');
  26. socket.on('market_depth', (message) => {
  27. // 收到服务器推送的消息,可以跟进自身业务进行操作
  28. console.log('market_depth 收到服务器消息', message)
  29. })
  30. socket.on('daymarket', (message) => {
  31. // 收到服务器推送的消息,可以跟进自身业务进行操作
  32. console.log('daymarket 收到服务器消息', message)
  33. })
  34. })
  35. socket.on("error", (error) => {
  36. console.log('error 收到服务器消息', error)
  37. })
  38. }
  39. let socket = null
  40. const filtration = (msg) => {
  41. if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
  42. msg.currency_id) {
  43. return true
  44. } else {
  45. return false
  46. }
  47. }
  48. // closeSocket();
  49. export const startSocket = (data) => {
  50. console.log('closeSocket 初始化')
  51. closeSocket();
  52. socket = io(socket_api, {
  53. query: {},
  54. transports: ['websocket', 'polling'],
  55. timeout: 5000,
  56. });
  57. socket.on('connect', () => {
  58. socket.on('market_depth', (msg) => {
  59. if (filtration(msg)) {
  60. // console.log('market_depth = ' , msg)
  61. // 收到服务器推送的消息,可以跟进自身业务进行操作
  62. // var buyIn = msg.bids.slice(0, 7);
  63. store.commit('websocket/set_bids', nums(msg.bids))
  64. // var out = msg.asks.slice(0, 7);
  65. store.commit('websocket/set_asks', nums(msg.asks))
  66. }
  67. })
  68. socket.on('daymarket', (msg) => {
  69. // 收到服务器推送的消息,可以跟进自身业务进行操作
  70. if (filtration(msg)) {
  71. store.commit('websocket/set_daymarket', msg)
  72. }
  73. })
  74. })
  75. return false
  76. if (socketObj[data.type]) {
  77. socketObj[data.type].disconnect();
  78. socketObj[data.type] = null
  79. };
  80. socketObj[data.type] = io(socket_api, {
  81. query: {},
  82. transports: ['websocket', 'polling'],
  83. timeout: 5000,
  84. });
  85. socketObj[data.type].on(data.type, (msg) => {
  86. if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
  87. msg.currency_id) {
  88. if (msg.type == 'market_depth') {
  89. // var buyIn = msg.bids.slice(0, 7);
  90. store.commit('websocket/set_bids', nums(msg.bids))
  91. // var out = msg.asks.slice(0, 7);
  92. store.commit('websocket/set_asks', nums(msg.asks))
  93. }
  94. if (msg.type == 'daymarket') {
  95. // state.daymarket = msg;
  96. store.commit('websocket/set_daymarket', msg)
  97. }
  98. }
  99. });
  100. }
  101. export const closeSocket = () => {
  102. try {
  103. socket && socket.disconnect()
  104. socket = null;
  105. } catch {}
  106. }