/
githubmirror
/
hyper
Обзор
Документация
Войти
/
githubmirror
/
hyper
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
3.0.2
app/rpc.js
58 строк
1 KB
Juan Campa
Performance - Data batching (#3336)
29 дек 2018, 02:13
29 дек 2018, 02:13
c07700a
Код
Авторство
О чём код?
const {EventEmitter} = require('events'); const {ipcMain} = require('electron'); const uuid = require('uuid'); class Server extends EventEmitter { constructor(win) { super(); this.win = win; this.ipcListener = this.ipcListener.bind(this); if (this.destroyed) { return; } const uid = uuid.v4(); this.id = uid; ipcMain.on(uid, this.ipcListener); // we intentionally subscribe to `on` instead of `once` // to support reloading the window and re-initializing // the channel this.wc.on('did-finish-load', () => { this.wc.send('init', uid); }); } get wc() { return this.win.webContents; } ipcListener(event, {ev, data}) { super.emit(ev, data); } emit(ch, data) { // This check is needed because data-batching can cause extra data to be // emitted after the window has already closed if (!this.win.isDestroyed()) { this.wc.send(this.id, {ch, data}); } } destroy() { this.removeAllListeners(); this.wc.removeAllListeners(); if (this.id) { ipcMain.removeListener(this.id, this.ipcListener); } else { // mark for `genUid` in constructor this.destroyed = true; } } } module.exports = win => { return new Server(win); };