net
Chromium のネイティブのネットワークライブラリを使用して、 HTTP/HTTPS リクエストを発行します。
net
モジュールは HTTP(S) リクエストを発行するクライアントサイド API です。 これは Node.js の HTTP および HTTPS モジュールに似ていますが、Node.js 実装の代わりに Chromium のネイティブネットワークライブラリを使用し、ウェブプロキシをより効果的にサポートします。 また、ネットワーク状況の確認にも対応しています。
以下は、完全に網羅しているわけではありませんが、ネイティブ Node.js モジュールの代わりに net
モジュールを使用することを検討する理由のリストです。
- システムプロキシ設定の自動管理、WPAD プロトコルとプロキシの PAC 設定ファイルのサポート。
- HTTPS リクエストの自動トンネリング。
- Basic、Digest、NTLM、Kerberosを使用したプロキシの認証、またはネゴシエート認証スキームをサポート。
- アクセス制御および監視に使用される、Fiddler のようなトラフィック監視プロキシのサポート。
API コンポーネント (クラス、メソッド、プロパティ、イベント名など) は、Node.js で使用されているものと同様です。
使用例:
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()
})
net
API は、アプリケーションが ready
イベントを発生させた後でのみ使用できます。 ready
イベントの前にモジュールを使用しようとすると、エラーがスローされます。
メソッド
net
モジュールには以下のメソッドがあります。
net.request(options)
Returns ClientRequest
Creates a ClientRequest
instance using the provided options
which are directly forwarded to the ClientRequest
constructor. net.request
メソッドは、options
オブジェクト内の指定されたプロトコルにしたがって、セキュアとインセキュア両方の HTTP リクエストを発行するために使用されます。
net.fetch(input[, init])
input
string | GlobalRequestinit
RequestInit & { bypassCustomProtocolHandlers?: boolean } (任意)
戻り地 Promise<GlobalResponse>
- Response をご参照ください。
Chrome のネットワークスタックを使って、レンダラーでの fetch()
の動作と同様にリクエストを送信します。 これは Node.js の HTTP スタックを使用する Node の fetch()
とは異なります。
サンプル:
async function example () {
const response = await net.fetch('https://my.app')
if (response.ok) {
const body = await response.json()
// ... 結果を使いましょう。
}
}
このメソッドは デフォルトのセッション からリクエストを発行します。 別のセッションから fetch
リクエストを送るには、ses.fetch() を利用してください。
fetch()
についての詳細は MDN のドキュメントをご参照ください。
制限事項:
net.fetch()
はdata:
やblob:
スキームをサポートしていません。integrity
オプションの値は無視されます。- 返された
Response
オブジェクトの.type
と.url
の値は不正確です。
デフォルトでは、net.fetch
で行われたリクエストは カスタムプロトコル だけでなく file:
に対しても許可され、webRequest ハンドラーが存在すればトリガされます。 RequestInit で非標準の bypassCustomProtocolHandlers
オプションが設定されている場合、このリクエストに対してカスタムのプロトコルハンドラは呼び出されません。 これにより、干渉されるリクエストを組み込みハンドラへ転送できます。 webRequest handlers will still be triggered when bypassing custom protocols.
protocol.handle('https', (req) => {
if (req.url === 'https://my-app.com') {
return new Response('<body>my app</body>')
} else {
return net.fetch(req, { bypassCustomProtocolHandlers: true })
}
})
注意: ユーティリティプロセス のカスタムプロトコルはサポートしていません。
net.isOnline()
戻り値 boolean
- 現在インターネットに接続しているかどうか。
戻り値が false
の場合、ユーザーがリモートサイトに接続できないことをかなり強く示しています。 しかし、true
の戻り値は決定的ではありません。いくつかのリンクが見当たらなくても、特定リモートサイトへの特定の接続試行が成功するかどうかは不確かです。
net.resolveHost(host, [options])
host
string - 解決するホスト名。
Returns Promise<ResolvedHost> - Resolves with the resolved IP addresses for the host
.
このメソッドは デフォルトのセッション からホストを解決します。 別のセッションからホストを解決するには、ses.resolveHost() を使用してください。
プロパティ
net.online
読み出し専用
boolean
型のプロパティです。 これは現在インターネットに接続しているかどうかです。
戻り値が false
の場合、ユーザーがリモートサイトに接続できないことをかなり強く示しています。 しかし、true
の戻り値は決定的ではありません。いくつかのリンクが見当たらなくても、特定リモートサイトへの特定の接続試行が成功するかどうかは不確かです。