index.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import Long from 'long'
  2. import { Package40 } from '../../../utils/websocket/package'
  3. import { FunCode } from '../../../constants/enum/funcode'
  4. import { QuoteRequest } from './interface'
  5. import { subscribeListToByteArrary } from './build/encode'
  6. import { parseSubscribeRsp } from './build/decode'
  7. import { globalCache } from '../../../stores/index'
  8. import socket from '../index'
  9. /**
  10. * 向行情服务器发送请求
  11. * @param params
  12. */
  13. function quoteServerMiddleware(params: QuoteRequest): Promise<Proto.GoodsQuoteRsp[]> {
  14. const { Token, LoginID } = globalCache.getValue('loginInfo');
  15. const content = subscribeListToByteArrary(params.data, Token, Long.fromNumber(LoginID));
  16. return new Promise((resolve, reject) => {
  17. socket.sendQuoteServer({
  18. data: {
  19. rspCode: FunCode.QuoteSubscribeRsp,
  20. payload: new Package40(FunCode.QuoteSubscribeReq, content)
  21. },
  22. success: (raw) => {
  23. if (raw.content) {
  24. parseSubscribeRsp(raw.content).then((res) => {
  25. resolve(res);
  26. }).catch((err) => {
  27. console.warn('报文解析失败', err);
  28. reject('报文解析失败')
  29. })
  30. } else {
  31. reject('数据异常');
  32. }
  33. },
  34. fail: (err) => {
  35. console.error('服务器请求失败', err);
  36. reject(err);
  37. }
  38. })
  39. })
  40. }
  41. /**
  42. * 向行情服务器发送请求
  43. * @param params
  44. */
  45. export function quoteServerRequest(params: QuoteRequest) {
  46. const { success, fail, complete } = params;
  47. quoteServerMiddleware(params).then((res) => {
  48. success && success(res);
  49. }).catch((msg) => {
  50. fail && fail({ msg });
  51. }).finally(() => {
  52. complete && complete();
  53. })
  54. }