websocket.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. let ws = false
  2. let weboscket_callback = null
  3. import { generateUUID } from './util'
  4. import { showToast } from './feedback'
  5. // 手动关闭 websocket
  6. let closewebsocket = () => {
  7. console.log("关闭")
  8. ws = false;
  9. dd.offSocketOpen();
  10. dd.offSocketMessage();
  11. dd.offSocketError();
  12. dd.closeSocket();
  13. dd.offSocketClose();
  14. }
  15. let initWebSocket = (callback) => {
  16. //初始化 websocket
  17. dd.onSocketClose((res) => {
  18. // console.log(res);
  19. });
  20. // 打开
  21. dd.onSocketOpen((res) => {
  22. if(dd.globalData.token){
  23. let wsData = {
  24. type: 'auth',
  25. token: dd.globalData.token,
  26. machine: generateUUID()
  27. };
  28. sendSocketMessage(wsData)
  29. }
  30. ws = true;
  31. callback()
  32. });
  33. // 监听信息
  34. dd.onSocketMessage((res) => {
  35. let data = JSON.parse(res.data)
  36. if (data.type == "ping") {
  37. if (ws) {
  38. sendSocketMessage('续命')
  39. }
  40. }
  41. return weboscket_callback(data);
  42. })
  43. // 报错
  44. dd.onSocketError((res) => {
  45. showToast('服务器繁忙,请稍后再试!');
  46. return weboscket_callback({ type: 'error' })
  47. // opneWebSocket();
  48. });
  49. // 创建
  50. dd.connectSocket({
  51. url: 'wss://' + dd.globalData.webScoketUrl + '/ws/'
  52. });
  53. }
  54. // 发送消息
  55. let sendSocketMessage = (message) => {
  56. dd.sendSocketMessage({
  57. data: JSON.stringify(message), // 需要发送的内容
  58. success: (res) => { },
  59. });
  60. };
  61. // 发送数据
  62. let sendData = (data, callback) => {
  63. weboscket_callback = callback
  64. if (ws) {//周统计不需要验证
  65. sendSocketMessage(data);
  66. } else {
  67. initWebSocket(() => {
  68. sendData(data, callback);
  69. });
  70. }
  71. }
  72. // 导出
  73. export {
  74. initWebSocket,
  75. sendData,
  76. closewebsocket
  77. }