当用户需要让渲染进程(h5页面)与electron进程直接通信时,功能文件须放在 electron/ipc 目录下。
前端(vue)通过调用如下方法访问:
// 版本 >= 1.14.0
// 【前端代码】:frontend/src/views/demo/socket/Index.vue
// 短消息
this.$ipcCallMain('example.hello', value).then(r => {
self.$message.info(r);
})
// 长消息
self.$ipc.on('example.socketMessageStart', (event, result) => {
self.socketMessageString = result;
})
self.$ipc.send('example.socketMessageStart', '时间')
// 【服务端代码】: electron/ipc/example.js
// 短消息
exports.hello = function (event, channel, msg) {
let newMsg = msg + " +1"
let reply = ''
reply = '收到:' + msg + ',返回:' + newMsg
return reply
}
// 长消息
exports.socketMessageStart = function (event, channel, arg) {
// 每隔1秒,向前端页面发送消息
// 用定时器模拟
myTimer = setInterval(function(e, c, msg) {
let timeNow = Date.now();
let data = msg + ':' + timeNow;
e.reply(`${c}`, data)
}, 1000, event, channel, arg)
return '开始了'
}
// 旧版本
// 【前端代码】:frontend/src/views/example/Ipc.vue
helloHandle(value) {
const self = this;
this.$callMain('example.hello', value).then(r => {
self.$message.info(r);
})
},
// 【服务端代码】:electron/ipc/example.js
answerRenderer('example.hello', async (msg) => {
let newMsg = msg + " +1"
let reply = ''
reply = '收到:' + msg + ',返回:' + newMsg
return reply
})