websocket.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. });
  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. let url=is? 'wss://' + dd.globalData.webScoketUrl + '/ws2/':'wss://' + dd.globalData.webScoketUrl + '/ws/'
  51. // url='wss://app55493.eapps.dingtalkcloud.com/ws2/'
  52. dd.connectSocket({
  53. url:url
  54. });
  55. }
  56. // 发送消息
  57. let sendSocketMessage = (message) => {
  58. dd.sendSocketMessage({
  59. data: JSON.stringify(message), // 需要发送的内容
  60. success: (res) => { },
  61. });
  62. };
  63. // 发送数据
  64. let sendData = (data, callback,is) => {
  65. weboscket_callback = callback
  66. if (ws) {//周统计不需要验证
  67. sendSocketMessage(data);
  68. } else {
  69. initWebSocket(() => {
  70. sendData(data, callback);
  71. },is);
  72. }
  73. }
  74. // 导出
  75. export {
  76. initWebSocket,
  77. sendData,
  78. closewebsocket
  79. }