socket.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /**
  2. * @param {string} url
  3. * @param {Function} success
  4. * @param {Function} fail
  5. * @description 创建新的scoket链接
  6. */
  7. export function scoketNew(url, success = function() {}, fail = function() {}) {
  8. const scoket = uni.connectSocket({
  9. url,
  10. success,
  11. fail
  12. });
  13. return {
  14. scoket,
  15. scoketOpen,
  16. scoketSend,
  17. scoketClose,
  18. scoketMessage
  19. }
  20. }
  21. /**
  22. * @param {Object} scoket 会话对象
  23. */
  24. export function scoketOpen() {
  25. let that = this;
  26. return new Promise((resolve, rejact) => {
  27. that.scoket.onOpen(res => {
  28. resolve(res)
  29. })
  30. })
  31. }
  32. // 发送消息
  33. /**
  34. * @param {Object} data 发送的数据
  35. */
  36. export function scoketSend(data) {
  37. let that = this;
  38. return new Promise((resolve, rejact) => {
  39. that.scoket.send({
  40. data: JSON.stringify(data),
  41. success: res => {
  42. resolve(res)
  43. },
  44. fail: res => {
  45. rejact(res)
  46. },
  47. });
  48. })
  49. }
  50. /**
  51. * @@description 关闭会话链接
  52. */
  53. export function scoketClose() {
  54. this.scoket.close({
  55. success(res) {
  56. console.log('关闭成功', res);
  57. },
  58. fail(err) {
  59. console.log('关闭失败', err);
  60. }
  61. })
  62. }
  63. /**
  64. * @@description 监听会话
  65. */
  66. export function scoketMessage(fun) {
  67. this.scoket.onMessage(res => {
  68. const data = JSON.parse(res.data);
  69. if (data.code) {
  70. if (+data.code == 60018) {
  71. console.log('scoket返回错误',data);
  72. }
  73. } else {
  74. fun(data)
  75. }
  76. });
  77. }
  78. // this.socketTask.onOpen(res => {
  79. // console.log('WebSocket连接正常打开中...!');
  80. // this.socketOpen = true;
  81. // // 注:只有连接正常打开中 ,才能正常收到消息
  82. // this.socketTask.onMessage(res => {
  83. // this.client_id = JSON.parse(res.data).client_id;
  84. // console.log(JSON.parse(res.data));
  85. // if (JSON.parse(res.data).code == 10501) {
  86. // console.log('服务器问题');
  87. // uni.showLoading({
  88. // title: '断线重连'
  89. // });
  90. // // this.closeSocket();
  91. // } else if (JSON.parse(res.data).code == 0) {
  92. // this.$api.msg(JSON.parse(res.data).msg);
  93. // } else {
  94. // console.log('连接成功');
  95. // // ls.content.indexOf('http')
  96. // let newmessage = JSON.parse(res.data);
  97. // let add_time = getTime(newmessage.timestamp)
  98. // newmessage = {
  99. // avatar: newmessage.avatar,
  100. // content: newmessage.content,
  101. // nickname: newmessage.nickname,
  102. // order_id: newmessage.order_id,
  103. // type: newmessage.m_type,
  104. // uid: newmessage.uid,
  105. // add_time: add_time
  106. // }
  107. // if (newmessage.type == 5) {
  108. // newmessage.content = newmessage.content.split(',');
  109. // newmessage.content[0].split('?')
  110. // }
  111. // if (newmessage.order_id == this.order_id) {
  112. // // let ques_name = this.que_url
  113. // this.MsgList = this.MsgList.concat(newmessage);
  114. // this.MsgList = this.MsgList.map(e => {
  115. // e.add_time = Date.parse(e.add_time).toString();
  116. // e.add_time = e.add_time.substr(0, 10);
  117. // return e;
  118. // });
  119. // for (let i = 0; i < this.MsgList.length; i++) {
  120. // let length = this.MsgList.length;
  121. // //当前记录时间
  122. // let newTime = this.MsgList[i].add_time;
  123. // //上一条记录时间
  124. // if (i + 1 < length) {
  125. // let lastTime = this.MsgList[i + 1].add_time;
  126. // let time = (this.MsgList[i + 1].add_time) - (this.MsgList[i].add_time);
  127. // if (time > 300) {
  128. // this.MsgList[i].time = true;
  129. // }
  130. // }
  131. // }
  132. // this.MsgList = this.MsgList.map(e => {
  133. // e.add_time = getTime(e.add_time);
  134. // return e;
  135. // });
  136. // console.log(334, this.MsgList)
  137. // }
  138. // this.$nextTick(function() {
  139. // this.scrollToBottom();
  140. // });
  141. // }
  142. // });
  143. // let join = '{"type":"handshake","role":"user","uid":' + this.userInfo.uid + '}';
  144. // console.log(join);
  145. // this.socketTask.send({
  146. // data: join,
  147. // success: res => {
  148. // console.log('消息发送成功');
  149. // }
  150. // });
  151. // });