socket.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { defineStore } from 'pinia';
  2. import { ref, computed } from 'vue';
  3. import client from "@/stores/modules/client";
  4. import icpList from '@/utils/ipc'
  5. const socket = defineStore('socket', ()=>{
  6. const socket = ref(null);
  7. const clientStore = client();
  8. clientStore.ipc.on(icpList.socket.connect, async (event, result) => {
  9. socket.value = null
  10. })
  11. async function connectSocket(){
  12. if(socket.value) return socket.value;
  13. await new Promise((resolve, reject) => {
  14. if(!clientStore.isClient) resolve(true);
  15. clientStore.ipc.removeAllListeners(icpList.socket.connect);
  16. clientStore.ipc.send(icpList.socket.connect);
  17. clientStore.ipc.on(icpList.socket.connect+'_open', async (event, result) => {
  18. socket.value = result;
  19. resolve(result);
  20. });
  21. });
  22. }
  23. async function disconnectSocket(){
  24. if(!clientStore.isClient) return;
  25. await new Promise((resolve,reject)=>{
  26. clientStore.ipc.removeAllListeners(icpList.socket.disconnect);
  27. clientStore.ipc.send(icpList.socket.disconnect);
  28. clientStore.ipc.on(icpList.socket.connect, async (event, result) => {
  29. socket.value = null
  30. resolve(result)
  31. })
  32. })
  33. }
  34. async function sendMessage(data){
  35. if(!clientStore.isClient) return;
  36. if (data?.type !== 'get_scale_data') {
  37. console.log('sendMessage');
  38. console.log(data);
  39. }
  40. new Promise((resolve,reject)=>{
  41. clientStore.ipc.removeAllListeners(icpList.socket.sendMessage);
  42. clientStore.ipc.send(icpList.socket.sendMessage,JSON.stringify(data));
  43. })
  44. }
  45. return {
  46. sendMessage,
  47. connectSocket,
  48. disconnectSocket,
  49. }
  50. });
  51. export default socket;