electron/docs/api/net.md

72 lines
2.5 KiB
Markdown
Raw Normal View History

2016-10-18 17:14:43 +00:00
# net
2016-10-31 22:48:06 +00:00
> Issue HTTP/HTTPS requests using Chromium's native networking library
2016-10-18 17:14:43 +00:00
2016-11-03 17:26:00 +00:00
Process: [Main](../tutorial/quick-start.md#main-process)
2016-10-20 10:30:03 +00:00
The `net` module is a client-side API for issuing HTTP(S) requests. It is
2016-11-01 03:05:23 +00:00
similar to the [HTTP](https://nodejs.org/api/http.html) and
2016-10-20 11:57:08 +00:00
[HTTPS](https://nodejs.org/api/https.html) modules of Node.js but uses
2016-10-31 22:48:06 +00:00
Chromium's native networking library instead of the Node.js implementation,
offering better support for web proxies.
2016-10-20 10:30:03 +00:00
2016-10-31 22:48:06 +00:00
The following is a non-exhaustive list of why you may consider using the `net`
2016-10-20 10:30:03 +00:00
module instead of the native Node.js modules:
2016-10-31 22:48:06 +00:00
2016-10-20 10:30:03 +00:00
* Automatic management of system proxy configuration, support of the wpad
2016-11-01 03:05:23 +00:00
protocol and proxy pac configuration files.
2016-10-18 17:14:43 +00:00
* Automatic tunneling of HTTPS requests.
2016-10-20 10:30:03 +00:00
* Support for authenticating proxies using basic, digest, NTLM, Kerberos or
2016-11-01 03:05:23 +00:00
negotiate authentication schemes.
2016-10-20 10:30:03 +00:00
* Support for traffic monitoring proxies: Fiddler-like proxies used for access
2016-11-01 03:05:23 +00:00
control and monitoring.
2016-10-18 17:14:43 +00:00
2016-10-20 11:57:08 +00:00
The `net` module API has been specifically designed to mimic, as closely as
2016-10-20 10:30:03 +00:00
possible, the familiar Node.js API. The API components including classes,
methods, properties and event names are similar to those commonly used in
Node.js.
2016-10-19 16:19:28 +00:00
2016-10-20 10:30:03 +00:00
For instance, the following example quickly shows how the `net` API might be
used:
2016-10-19 16:05:38 +00:00
2016-10-18 17:14:43 +00:00
```javascript
const {app} = require('electron')
app.on('ready', () => {
2016-10-19 16:05:38 +00:00
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)}`)
2016-10-19 16:05:38 +00:00
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`)
})
response.on('end', () => {
console.log('No more data in response.')
2016-10-19 16:05:38 +00:00
})
2016-10-19 13:34:21 +00:00
})
2016-10-19 16:05:38 +00:00
request.end()
2016-10-18 17:14:43 +00:00
})
```
2016-10-20 10:30:03 +00:00
By the way, it is almost identical to how you would normally use the
[HTTP](https://nodejs.org/api/http.html)/[HTTPS](https://nodejs.org/api/https.html)
modules of Node.js
2016-10-19 16:19:28 +00:00
2016-10-20 11:57:08 +00:00
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.
2016-10-18 17:14:43 +00:00
## Methods
2016-10-19 13:34:21 +00:00
The `net` module has the following methods:
### `net.request(options)`
2016-10-31 22:48:06 +00:00
* `options` (Object | String) - The `ClientRequest` constructor options.
2016-10-19 13:34:21 +00:00
Returns `ClientRequest`
2016-10-18 17:14:43 +00:00
2016-11-10 20:25:26 +00:00
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.