LOCKING盒子版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

44 line
1.2 KiB

  1. const io = require('ws');
  2. const config = require('./config');
  3. const skUrl = `ws://127.0.0.1:${config.gatewayPort}/websocket/subscriptionTaskSync`;
  4. let socket;
  5. function initialWebsocket(onMessage, onError, onClose) {
  6. socket = new io(skUrl);
  7. socket.on('open', () => {
  8. // socket.emit("hello", "world");
  9. console.log('socket connection');
  10. // socket.send('1');
  11. });
  12. socket.on('message', (message) => {
  13. console.log('socket message', message);
  14. onMessage(message);
  15. });
  16. socket.on('error', (...args) => {
  17. console.log('socket error:', args);
  18. onError && onError(...args);
  19. });
  20. socket.on('close', (...args) => {
  21. console.log('socket close:', args);
  22. onClose && onClose(...args);
  23. setTimeout(() => initialWebsocket(onMessage, onError, onClose), 5000);
  24. });
  25. }
  26. module.exports.initialWebsocketEvents = function initialWebsocketEvents(
  27. ipcMain,
  28. onMessage,
  29. onError,
  30. onClose,
  31. ) {
  32. initialWebsocket(onMessage, onError, onClose);
  33. ipcMain.handle('socket:send-message', (event, message) => {
  34. if (socket && socket.readyState === io.OPEN) {
  35. console.log('socket send message to gateway:', message);
  36. socket.send(message);
  37. } else {
  38. console.log('socket status not ready:', socket.readyState);
  39. }
  40. });
  41. };