| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | # ipcRenderer
 | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | The `ipcRenderer` module is an instance of the | 
					
						
							|  |  |  | [EventEmitter](https://nodejs.org/api/events.html) class. It provides a few | 
					
						
							|  |  |  | methods so you can send synchronous and asynchronous messages from the render | 
					
						
							|  |  |  | process (web page) to the main process.  You can also receive replies from the | 
					
						
							|  |  |  | main process. | 
					
						
							| 
									
										
										
										
											2015-08-26 17:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | See [ipcMain](ipc-main.md) for code examples. | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | ## Listening for Messages
 | 
					
						
							| 
									
										
										
										
											2015-08-26 17:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | The `ipcRenderer` module has the following method to listen for events: | 
					
						
							| 
									
										
										
										
											2015-08-26 17:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | ### `ipcRenderer.on(channel, listener)`
 | 
					
						
							| 
									
										
										
										
											2015-08-26 17:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | * `channel` String | 
					
						
							|  |  |  | * `listener` Function | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | Listens to `channel`, when a new message arrives `listener` would be called with | 
					
						
							|  |  |  | `listener(event, args...)`. | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | ### `ipcRenderer.once(channel, listener)`
 | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | * `channel` String | 
					
						
							|  |  |  | * `listener` Function | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | Adds a one time `listener` function for the event. This `listener` is invoked | 
					
						
							|  |  |  | only the next time a message is sent to `channel`, after which it is removed. | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | ### `ipcRenderer.removeListener(channel, listener)`
 | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | * `channel` String | 
					
						
							|  |  |  | * `listener` Function | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | Removes the specified `listener` from the listener array for the specified | 
					
						
							|  |  |  | `channel`. | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | ### `ipcRenderer.removeAllListeners([channel])`
 | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | * `channel` String (optional) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Removes all listeners, or those of the specified `channel`. | 
					
						
							| 
									
										
										
										
											2016-01-13 10:18:12 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | ## Sending Messages
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The `ipcRenderer` module has the following methods for sending messages: | 
					
						
							| 
									
										
										
										
											2015-08-26 17:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | ### `ipcRenderer.send(channel[, arg1][, arg2][, ...])`
 | 
					
						
							| 
									
										
										
										
											2015-08-26 17:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | * `channel` String | 
					
						
							| 
									
										
										
										
											2015-08-28 14:57:14 -07:00
										 |  |  | * `arg` (optional) | 
					
						
							| 
									
										
										
										
											2015-08-26 17:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | Send a message to the main process asynchronously via `channel`, you can also | 
					
						
							|  |  |  | send arbitrary arguments. Arguments will be serialized in JSON internally and | 
					
						
							|  |  |  | hence no functions or prototype chain will be included. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The main process handles it by listening for `channel` with `ipcMain` module. | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | ### `ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])`
 | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | * `channel` String | 
					
						
							| 
									
										
										
										
											2015-08-28 14:57:14 -07:00
										 |  |  | * `arg` (optional) | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | Send a message to the main process synchronously via `channel`, you can also | 
					
						
							|  |  |  | send arbitrary arguments. Arguments will be serialized in JSON internally and | 
					
						
							|  |  |  | hence no functions or prototype chain will be included. | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | The main process handles it by listening for `channel` with `ipcMain` module, | 
					
						
							|  |  |  | and replies by setting `event.returnValue`. | 
					
						
							| 
									
										
										
										
											2013-08-14 15:43:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | __Note:__ Sending a synchronous message will block the whole renderer process, | 
					
						
							|  |  |  | unless you know what you are doing you should never use it. | 
					
						
							| 
									
										
										
										
											2014-12-17 11:09:11 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | ### `ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])`
 | 
					
						
							| 
									
										
										
										
											2014-12-17 11:09:11 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 11:34:39 +08:00
										 |  |  | * `channel` String | 
					
						
							| 
									
										
										
										
											2015-08-28 14:57:14 -07:00
										 |  |  | * `arg` (optional) | 
					
						
							| 
									
										
										
										
											2014-12-17 11:09:11 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | Like `ipcRenderer.send` but the event will be sent to the `<webview>` element in | 
					
						
							|  |  |  | the host page instead of the main process. |