electron/docs-translations/zh-CN/api/ipc-main-process.md
2015-10-11 13:52:06 +08:00

1.7 KiB

ipc (主进程)

在主进程使用ipc模块时,ipc负责捕获从渲染进程(网页)发送的同步或者是异步消息.

发送消息

主进程也可以向渲染进程发送信息,具体可以看WebContents.send.

  • 当发送消息的时候,事件名字为'channel'.
  • 回复一个同步消息的时候,你需要使用event.returnValue
  • 回复一个异步消息的时候,使用event.sender.send(...)

下面是一个主进程和渲染进程的通信例子.

// 在主进程中.
var ipc = require('ipc');
ipc.on('asynchronous-message', function(event, arg) {
  console.log(arg);  // 打印 "ping"
  event.sender.send('asynchronous-reply', 'pong');
});

ipc.on('synchronous-message', function(event, arg) {
  console.log(arg);  // 打印 "ping"
  event.returnValue = 'pong';
});
// 在渲染进程(网页).
var ipc = require('ipc');
console.log(ipc.sendSync('synchronous-message', 'ping')); // 打印 "pong"

ipc.on('asynchronous-reply', function(arg) {
  console.log(arg); // 打印 "pong"
});
ipc.send('asynchronous-message', 'ping');

监听消息

ipc模块有下列几种方法来监听事件.

ipc.on(channel, callback)

  • channel - 事件名称.
  • callback - 回调函数.

当事件发生的时候,会传入callback eventarg参数.

IPC 事件

传入callbackevent对象含有下列方法.

Event.returnValue

在同步消息中,设置这个值将会被返回.

Event.sender

返回一个可以发送消息的WebContents.

Event.sender.send(channel[.arg1][,arg2][,...])

  • channel - 事件名称.
  • arg (选用)

这个可以发送一个可带参数的异步消息回渲染进程.