7. ipcMain

原文:https://github.com/electron/electron/blob/master/docs/api/ipc-main.md
譯者:Lin

從主進程到渲染進程的異步通訊匕得。

線程:主線程

ipcMain模塊是一個EventEmitter類的實例巾表。在主線程中使用時,它處理發(fā)送自渲染線程(網頁)的異步和同步消息调塌。發(fā)送自渲染器的消息將會使用這個模塊中被分發(fā)惠猿。

<h2 id="sending-messages">發(fā)送消息</h2>

它也可以從主進程發(fā)送消息到渲染進程,更多信息請查看webContents.send偶妖。

  • 當發(fā)送一個消息,事件的名字是channel态秧。
  • 回復一個同步消息扼鞋,你需要設置event.returnValue申鱼。
  • 返回一個異步消息給發(fā)送者云头,你可能使用event.sender.send(...)

一個在渲染進程和主進程之間發(fā)送和處理消息的例子:

// 在主進程中匣砖。
const {ipcMain} = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
    console.log(arg)  // 打印結果是"ping"
    event.sender.send('asynchronous-reply', 'pong')
})

ipcMain.on('synchronous-message', (event, arg) => {
    console.log(arg)  // 打印結果是"ping"
    event.returnValue = 'pong'
})


// 在渲染進程中(網頁)。
const {ipcRenderer} = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // 打印結果為"pong"

ipcRenderer.on('asynchronous-reply', (event, arg) => {
    console.log(arg) // 打印結果為"pong"
})
ipcRenderer.send('asynchronous-message', 'ping')

<h2 id="methods">Methods</h2>

ipcMain模塊又下面的監(jiān)聽事件的方法:

<h3 id="ipcMain-on"><code>ipcMain.on(channel, listener)</code></h3>

  • channel String類型
  • listener Function類型

監(jiān)聽channel对人,當一個新的消息送達監(jiān)聽者將會調用listener(event, args...)拂共。

<h3 id="ipcMain-once"><code>ipcMain.once(channel, listener)</code></h3>

  • channel String類型
  • listener Function類型

給事件添加一個一次性listener函數(shù)。這個監(jiān)聽者只會在下一次一個消息被發(fā)送到channel時被調用匣缘,調用之后就會被移除。

<h3 id="ipcMain-removeListener"><code>ipcMain.removeListener(channel, listener)</code></h3>

  • channel String類型
  • listener Function類型

通過channel在監(jiān)聽者數(shù)組中移除指定的listener培慌。

<h3 id="ipcMain-removeAllListeners"><code>ipcMain.removeAllListeners([channel])</code></h3>

  • channel String類型(可選參數(shù))

移除所有監(jiān)聽者柑爸,或者指定的channel中的所有監(jiān)聽者。

<h2 id="event-object">Event對象</h2>

通過callback返回的event對象有下面的方法:

<h3 id="event-returnValue"><code>event.returnValue</code></h3>

設置在一個同步消息中的返回值馅而。

<h3 id="event-sender"><code>event.sender</code></h3>

返回發(fā)送的消息的webContents譬圣,你可以調用event.sender.send來回復異步消息,查看webContents.send來獲取更多消息厘熟。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末绳姨,一起剝皮案震驚了整個濱河市登澜,隨后出現(xiàn)的幾起案子飘庄,更是在濱河造成了極大的恐慌,老刑警劉巖谴仙,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碾盐,死亡現(xiàn)場離奇詭異,居然都是意外死亡廓旬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門涩盾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來励背,“玉大人,你說我怎么就攤上這事址儒。” “怎么了莲趣?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵饱溢,是天一觀的道長。 經常有香客問我潘鲫,道長肋杖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任浊竟,我火速辦了婚禮,結果婚禮上逐沙,老公的妹妹穿的比我還像新娘洼畅。我一直安慰自己,他們只是感情好帝簇,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著残揉,像睡著了一般芋浮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天眶痰,我揣著相機與錄音梯啤,去河邊找鬼。 笑死因宇,一個胖子當著我的面吹牛,可吹牛的內容都是我干的察滑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼婚惫,長吁一口氣:“原來是場噩夢啊……” “哼魂爪!你這毒婦竟也來了?” 一聲冷哼從身側響起蒋川,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撩笆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后夕冲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡泣栈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年弥姻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疼进。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡秧廉,死狀恐怖拣帽,靈堂內的尸體忽然破棺而出赔癌,到底是詐尸還是另有隱情诞外,我是刑警寧澤灾票,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布茫虽,位于F島的核電站,受9級特大地震影響正什,放射性物質發(fā)生泄漏号杏。R本人自食惡果不足惜婴氮,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一主经、第九天 我趴在偏房一處隱蔽的房頂上張望庭惜。 院中可真熱鬧罩驻,春花似錦护赊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽透绩。三九已至祈秕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間请毛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工固棚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人此洲。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓呜师,卻偏偏與公主長得像娶桦,于是被迫代替她去往敵國和親汁汗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理祈争,服務發(fā)現(xiàn)角寸,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 轉載自http://blog.csdn.net/qq295445028/article/details/79930...
    WebSSO閱讀 2,931評論 0 3
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,332評論 0 6
  • 原文:https://github.com/electron/electron/blob/master/docs/...
    Shmily落墨閱讀 6,171評論 1 1
  • 原文:https://github.com/electron/electron/blob/master/docs/...
    Shmily落墨閱讀 6,126評論 0 1