Electron ipcMain 模塊

2019-08-14 19:21 更新

ipcMain 模塊是類 EventEmitter 的實(shí)例.當(dāng)在主進(jìn)程中使用它的時(shí)候,它控制著由渲染進(jìn)程(web page)發(fā)送過來的異步或同步消息.從渲染進(jìn)程發(fā)送過來的消息將觸發(fā)事件.

發(fā)送消息

同樣也可以從主進(jìn)程向渲染進(jìn)程發(fā)送消息,查看更多 webContents.send .

  • 發(fā)送消息,事件名為 channel.
  • 回應(yīng)同步消息, 你可以設(shè)置 event.returnValue.
  • 回應(yīng)異步消息, 你可以使用 event.sender.send(...).

一個(gè)例子,在主進(jìn)程和渲染進(jìn)程之間發(fā)送和處理消息:

// In main process.
const ipcMain = require('electron').ipcMain;
ipcMain.on('asynchronous-message', function(event, arg) {
  console.log(arg);  // prints "ping"
  event.sender.send('asynchronous-reply', 'pong');
});

ipcMain.on('synchronous-message', function(event, arg) {
  console.log(arg);  // prints "ping"
  event.returnValue = 'pong';
});
// In renderer process (web page).
const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong"

ipcRenderer.on('asynchronous-reply', function(event, arg) {
  console.log(arg); // prints "pong"
});
ipcRenderer.send('asynchronous-message', 'ping');

監(jiān)聽消息

ipcMain 模塊有如下監(jiān)聽事件方法:

ipcMain.on(channel, listener)

  • channel String
  • listener Function

監(jiān)聽 channel, 當(dāng)新消息到達(dá),將通過 listener(event, args...) 調(diào)用 listener.

ipcMain.once(channel, listener)

  • channel String
  • listener Function

為事件添加一個(gè)一次性用的listener 函數(shù).這個(gè) listener 只有在下次的消息到達(dá) channel 時(shí)被請求調(diào)用,之后就被刪除了.

ipcMain.removeListener(channel, listener)

  • channel String
  • listener Function

為特定的 channel 從監(jiān)聽隊(duì)列中刪除特定的 listener 監(jiān)聽者.

ipcMain.removeAllListeners([channel])

  • channel String (可選)

刪除所有監(jiān)聽者,或特指的 channel 的所有監(jiān)聽者.

事件對象

傳遞給 callback  event 對象有如下方法:

event.returnValue

將此設(shè)置為在一個(gè)同步消息中返回的值.

event.sender

返回發(fā)送消息的 webContents ,你可以調(diào)用 event.sender.send 來回復(fù)異步消息,更多信息 webContents.send.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號