鍍金池/ 問答/HTML/ electron主線程中通過mainWindow.webContents.sen

electron主線程中通過mainWindow.webContents.send發(fā)送事件,渲染線程接收不到

準(zhǔn)備實(shí)現(xiàn)的功能:
頁面1(渲染進(jìn)程1)中點(diǎn)擊按鈕,發(fā)送事件給到主進(jìn)程。主進(jìn)程成功接收事件后,通過mainWindow.webContents.send發(fā)送事件event。在頁面2(渲染進(jìn)程2)中通過ipcRender.on方法監(jiān)聽event,當(dāng)接收到event后,開始業(yè)務(wù)處理。

問題:
主進(jìn)程成功接收到了頁面1(渲染進(jìn)程1)發(fā)送的事件,隨后在主進(jìn)程中通過mainWindow.webContents.send發(fā)送到事件event,頁面2(渲染進(jìn)程2)并沒有收到。

代碼:

頁面1(渲染進(jìn)程1):

const ipcRenderer = require('electron').ipcRenderer;

function playDanmu(){
    ipcRenderer.send('sigPlayDanmu', '123456');
};

主進(jìn)程:

const ipcMain = require('electron').ipcMain;
ipcMain.on('sigPlayDanmu', (event, args) => {
    console.log('sigPlayDanmu is captured');
    mainWindow.webContents.send('ping', 'pong');
});

頁面2(渲染進(jìn)程2):

    <script>
        require('electron').ipcRenderer.on('ping', (event, message) => {
            ...業(yè)務(wù)處理
        })
    </script>

是哪里的姿勢(shì)不對(duì)嗎?

所以想問一下大家,主線程怎么主動(dòng)請(qǐng)求渲染線程調(diào)用渲染線程的方法或觸發(fā)渲染線程的事件呢?

謝謝!

回答
編輯回答
奧特蛋

在主線程中,調(diào)用webContents.send()方法的對(duì)象用錯(cuò)了。
往哪個(gè)窗口對(duì)應(yīng)的渲染線程中發(fā)消息,就使用哪個(gè)窗口對(duì)象來調(diào)用。
上面改為page2WindowObject.webContents.send()就可以了

2017年6月27日 07:10