websocket.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. let wsData = {
  23. type: 'auth',
  24. token: dd.globalData.token,
  25. machine: generateUUID()
  26. };
  27. sendSocketMessage(wsData)
  28. ws = true;
  29. callback()
  30. });
  31. // 监听信息
  32. dd.onSocketMessage((res) => {
  33. let data = JSON.parse(res.data)
  34. if (data.type == "ping") {
  35. if (ws) {
  36. sendSocketMessage('续命')
  37. }
  38. }
  39. return weboscket_callback(data);
  40. })
  41. // 报错
  42. dd.onSocketError((res) => {
  43. showToast('服务器繁忙,请稍后再试!');
  44. return weboscket_callback({ type: 'error' })
  45. // opneWebSocket();
  46. });
  47. // 创建
  48. dd.connectSocket({
  49. url: 'wss://' + dd.globalData.webScoketUrl + '/ws/'
  50. });
  51. }
  52. // 发送消息
  53. let sendSocketMessage = (message) => {
  54. dd.sendSocketMessage({
  55. data: JSON.stringify(message), // 需要发送的内容
  56. success: (res) => { },
  57. });
  58. };
  59. // 发送数据
  60. let sendData = (data, callback) => {
  61. weboscket_callback = callback
  62. if (ws) {
  63. sendSocketMessage(data);
  64. } else {
  65. initWebSocket(() => {
  66. sendData(data, callback);
  67. });
  68. }
  69. }
  70. // 导出
  71. export {
  72. initWebSocket,
  73. sendData,
  74. closewebsocket
  75. }