1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- const ipc = require('@achrinza/node-ipc')
- // Utils
- const { log, dumpObject } = require('../util/logger')
- ipc.config.id = process.env.VUE_CLI_IPC || 'vue-cli'
- ipc.config.retry = 1500
- ipc.config.silent = true
- const listeners = []
- ipc.serve(() => {
- ipc.server.on('message', (data, socket) => {
- log('IPC message', dumpObject(data))
- for (const listener of listeners) {
- listener({
- data,
- emit: data => {
- ipc.server.emit(socket, 'message', data)
- }
- })
- }
- })
- ipc.server.on('ack', (data, socket) => {
- log('IPC ack', dumpObject(data))
- if (data.done) {
- ipc.server.emit(socket, 'ack', { ok: true })
- }
- })
- })
- ipc.server.start()
- function on (cb) {
- listeners.push(cb)
- return () => off(cb)
- }
- function off (cb) {
- const index = listeners.indexOf(cb)
- if (index !== -1) listeners.splice(index, 1)
- }
- function send (data) {
- log('IPC send', dumpObject(data))
- ipc.server.broadcast('message', data)
- }
- module.exports = {
- on,
- off,
- send
- }
|