Ver código fonte

add socket base

main
郑州 3 anos atrás
pai
commit
ee0f5f75c2
5 arquivos alterados com 65 adições e 2 exclusões
  1. +15
    -1
      electron/main.js
  2. +23
    -0
      electron/socket.js
  3. +14
    -0
      electron/tool.js
  4. +2
    -1
      package.json
  5. +11
    -0
      src/services/socket.ts

+ 15
- 1
electron/main.js Ver arquivo

@@ -2,9 +2,13 @@ const { app, BrowserWindow, dialog, ipcMain, shell } = require('electron');
const path = require('path');
const url = require('url');
const { initialStorageEvents, storage } = require('./storage');
const { initialWebsocketEvents } = require('./socket');
const { Subject } = require('./tool');

let mainWindow;

const socketMsgSubject = new Subject();

function createWindow() {
//创建窗口
mainWindow = new BrowserWindow({
@@ -44,12 +48,18 @@ function createWindow() {
}),
);
}
// 加载初始localStorage数据
const onMessageReceive = (message) => {
mainWindow.webContents.send('socket:on-message', message);
};

mainWindow.webContents.on('did-finish-load', () => {
// 加载初始localStorage数据
mainWindow.webContents.send('initialStorageData', storage.getAllItem());
socketMsgSubject.add(onMessageReceive);
});
mainWindow.on('closed', () => {
mainWindow = null;
socketMsgSubject.remove(onMessageReceive);
});
}

@@ -106,3 +116,7 @@ app.on('window-all-closed', () => {
app.quit();
}
});

initialWebsocketEvents(function onMessage(message) {
socketMsgSubject.notify(message);
});

+ 23
- 0
electron/socket.js Ver arquivo

@@ -0,0 +1,23 @@
const io = require('ws');

function initialWebsocket(onMessage) {
const socket = new io('ws://127.0.0.1:7888/websocket/subscriptionTaskSync');

socket.on('open', (socket) => {
// socket.emit("hello", "world");
console.log('socket connection');
socket.on('message', onMessage);
});
socket.on('error', (...args) => {
// socket.emit("hello", "world");
console.log('socket error:', args);
});
}

module.exports.initialWebsocketEvents = function initialWebsocketEvents(
onMessage,
onError,
) {
initialWebsocket();
// ipcMain.handle('socket:on', )
};

+ 14
- 0
electron/tool.js Ver arquivo

@@ -0,0 +1,14 @@
export class Subject {
constructor() {
this.observers = [];
}
add(observer) {
this.observers.push(observer);
}
remove(observer) {
this.observers = this.observers.filter((iO) => iO !== observer);
}
notify(...args) {
this.observers.forEach((f) => f(...args));
}
}

+ 2
- 1
package.json Ver arquivo

@@ -39,7 +39,8 @@
"electron-packager": "^15.2.0",
"electron-store": "^8.0.0",
"lodash": "^4.17.21",
"umi": "^3.4.25"
"umi": "^3.4.25",
"ws": "^7.5.2"
},
"devDependencies": {
"@types/ali-oss": "^6.0.8",


+ 11
- 0
src/services/socket.ts Ver arquivo

@@ -0,0 +1,11 @@
export const isClient = !!window.ipcRenderer; // process.env.IS_CLIENT;

const safeCall = (f: (...args: any[]) => any) => (isClient ? f : () => {});

const ipcRenderer = window.ipcRenderer;

if (isClient) {
window.addIpcRendererListener('socket:on-message', (_, message) => {
console.log('receive electron socket message:', message);
});
}

Carregando…
Cancelar
Salvar