c83f836faf
* docs: add references to app.whenReady() in isReady * refactor: prefer app.whenReady() In the docs, specs, and lib, replace instances of `app.once('ready')` (seen occasionally) and `app.on('ready')` (extremely common) with `app.whenReady()`. It's better to encourage users to use whenReady(): 1. it handles the edge case of registering for 'ready' after it's fired 2. it avoids the minor wart of leaving an active listener alive for an event that wll never fire again
64 lines
2.2 KiB
Markdown
64 lines
2.2 KiB
Markdown
# net
|
|
|
|
> Issue HTTP/HTTPS requests using Chromium's native networking library
|
|
|
|
Process: [Main](../glossary.md#main-process)
|
|
|
|
The `net` module is a client-side API for issuing HTTP(S) requests. It is
|
|
similar to the [HTTP](https://nodejs.org/api/http.html) and
|
|
[HTTPS](https://nodejs.org/api/https.html) modules of Node.js but uses
|
|
Chromium's native networking library instead of the Node.js implementation,
|
|
offering better support for web proxies.
|
|
|
|
The following is a non-exhaustive list of why you may consider using the `net`
|
|
module instead of the native Node.js modules:
|
|
|
|
* Automatic management of system proxy configuration, support of the wpad
|
|
protocol and proxy pac configuration files.
|
|
* Automatic tunneling of HTTPS requests.
|
|
* Support for authenticating proxies using basic, digest, NTLM, Kerberos or
|
|
negotiate authentication schemes.
|
|
* Support for traffic monitoring proxies: Fiddler-like proxies used for access
|
|
control and monitoring.
|
|
|
|
The API components (including classes, methods, properties and event names) are similar to those used in
|
|
Node.js.
|
|
|
|
Example usage:
|
|
|
|
```javascript
|
|
const { app } = require('electron')
|
|
app.whenReady().then(() => {
|
|
const { net } = require('electron')
|
|
const request = net.request('https://github.com')
|
|
request.on('response', (response) => {
|
|
console.log(`STATUS: ${response.statusCode}`)
|
|
console.log(`HEADERS: ${JSON.stringify(response.headers)}`)
|
|
response.on('data', (chunk) => {
|
|
console.log(`BODY: ${chunk}`)
|
|
})
|
|
response.on('end', () => {
|
|
console.log('No more data in response.')
|
|
})
|
|
})
|
|
request.end()
|
|
})
|
|
```
|
|
|
|
The `net` API can be used only after the application emits the `ready` event.
|
|
Trying to use the module before the `ready` event will throw an error.
|
|
|
|
## Methods
|
|
|
|
The `net` module has the following methods:
|
|
|
|
### `net.request(options)`
|
|
|
|
* `options` (ClientRequestConstructorOptions | String) - The `ClientRequest` constructor options.
|
|
|
|
Returns [`ClientRequest`](./client-request.md)
|
|
|
|
Creates a [`ClientRequest`](./client-request.md) instance using the provided
|
|
`options` which are directly forwarded to the `ClientRequest` constructor.
|
|
The `net.request` method would be used to issue both secure and insecure HTTP
|
|
requests according to the specified protocol scheme in the `options` object.
|