websocket.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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,is) => {
  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. },(err)=>{
  33. console.log("打开失败了",err)
  34. });
  35. // 监听信息
  36. dd.onSocketMessage((res) => {
  37. let data = JSON.parse(res.data)
  38. if (data.type == "ping") {
  39. if (ws) {
  40. sendSocketMessage('续命')
  41. }
  42. }
  43. return weboscket_callback(data);
  44. })
  45. // 报错
  46. dd.onSocketError((res) => {
  47. showToast('服务器繁忙,请稍后再试!');
  48. return weboscket_callback({ type: 'error' })
  49. // opneWebSocket();
  50. });
  51. // 创建
  52. let url= is? 'wss://' + dd.globalData.webScoketUrl + '/ws2/':'wss://' + dd.globalData.webScoketUrl + '/ws/'
  53. // url='wss://app55493.eapps.dingtalkcloud.com/ws2/'
  54. dd.connectSocket({
  55. url:url,
  56. success: (res) => {
  57. console.log("成功了",res)
  58. },
  59. fail: (res) => {
  60. console.log("失败了",res)
  61. },
  62. complete: () => {
  63. },
  64. });
  65. }
  66. // 发送消息
  67. let sendSocketMessage = (message) => {
  68. dd.sendSocketMessage({
  69. data: JSON.stringify(message), // 需要发送的内容
  70. success: (res) => { },
  71. });
  72. };
  73. // 发送数据
  74. let sendData = (data, callback,is) => {
  75. weboscket_callback = callback
  76. if (ws) {//周统计不需要验证
  77. sendSocketMessage(data);
  78. } else {
  79. initWebSocket(() => {
  80. sendData(data, callback);
  81. },is);
  82. }
  83. }
  84. // 导出
  85. export {
  86. initWebSocket,
  87. sendData,
  88. closewebsocket
  89. }