当用户需要让渲染进程(h5页面)与electron进程直接通信时,功能文件须放在 electron/ipc 目录下。
    前端(vue)通过调用如下方法访问:

    1. // 版本 >= 1.14.0
    2. // 【前端代码】:frontend/src/views/demo/socket/Index.vue
    3. // 短消息
    4. this.$ipcCallMain('example.hello', value).then(r => {
    5. self.$message.info(r);
    6. })
    7. // 长消息
    8. self.$ipc.on('example.socketMessageStart', (event, result) => {
    9. self.socketMessageString = result;
    10. })
    11. self.$ipc.send('example.socketMessageStart', '时间')
    12. // 【服务端代码】: electron/ipc/example.js
    13. // 短消息
    14. exports.hello = function (event, channel, msg) {
    15. let newMsg = msg + " +1"
    16. let reply = ''
    17. reply = '收到:' + msg + ',返回:' + newMsg
    18. return reply
    19. }
    20. // 长消息
    21. exports.socketMessageStart = function (event, channel, arg) {
    22. // 每隔1秒,向前端页面发送消息
    23. // 用定时器模拟
    24. myTimer = setInterval(function(e, c, msg) {
    25. let timeNow = Date.now();
    26. let data = msg + ':' + timeNow;
    27. e.reply(`${c}`, data)
    28. }, 1000, event, channel, arg)
    29. return '开始了'
    30. }
    1. // 旧版本
    2. // 【前端代码】:frontend/src/views/example/Ipc.vue
    3. helloHandle(value) {
    4. const self = this;
    5. this.$callMain('example.hello', value).then(r => {
    6. self.$message.info(r);
    7. })
    8. },
    9. // 【服务端代码】:electron/ipc/example.js
    10. answerRenderer('example.hello', async (msg) => {
    11. let newMsg = msg + " +1"
    12. let reply = ''
    13. reply = '收到:' + msg + ',返回:' + newMsg
    14. return reply
    15. })