微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Electron 的 send 方法在主进程中不起作用?

如何解决为什么 Electron 的 send 方法在主进程中不起作用?

我遇到了大麻烦。我检查了其他解决方案,但没有任何帮助。 我不明白为什么“send方法在这里不起作用。没有例外,没有消息或其他任何东西。

我尝试将 send 方法包装在另一种方法中,但失败了。 我尝试使用“sendToFrame方法,但它也失败了。

主要:

const { app,browserWindow,ipcMain } = require('electron')
let win;
function createWindow () {
    win = new browserWindow({
       width: 800,height: 600,frame: true,autoHideMenuBar: true,webPreferences: {
           nodeIntegration: true,allowRunningInsecureContent: true,contextIsolation: false,// false if you want to run 2e2 test with Spectron
           enableRemoteModule: true,}
    });

    win.loadFile('src/home.html');
    win.webContents.openDevTools();

    ipcMain.on('main',(event,msg) => {
        sendData()    // Does not work.
        event.reply('new-client','res')    // It works.
    })

    function sendData() {
        win.webContents.send('new-client',{wsh: 'wshsdqsdqs'});
    }
};

app.whenReady().then(createWindow);

下面,“ipcRenderer.send”方法有效。当我使用“webContents.send”方法(在主进程中)时,它向主进程发送数据但没有收到任何响应。

new-client.js:

const { ipcRenderer } = require('electron');
const {resolve} = require('path');
const {Message} = require(resolve('src/js/shared/class/message/message.js'));


ipcRenderer.on('new-client',arg) => {
    console.log(event)
    console.log(arg)
})

async function send() {
    const msg = new Message(
        'new-client','clients',true
    );
    ipcRenderer.send('main',msg);
}

编辑:

我忘记了... 我将数据发送到错误的窗口。

您可以使用 BrowserWindow.getAllWindows,然后将数据发送到特定窗口。

就我个人而言,我在windows打开时添加一个事件,这样我就可以正常发送数据和管理windows了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。