net
Chromiumのネイティブネットワークライブラリを使用してHTTP/HTTPSリクエストを発行する
net
モジュールは、HTTP(S)リクエストを発行するためのクライアントサイドAPIです。Node.jsのHTTPおよびHTTPSモジュールに似ていますが、Node.jsの実装ではなくChromiumのネイティブネットワークライブラリを使用するため、Webプロキシのサポートが向上しています。また、ネットワークステータスの確認もサポートしています。
以下は、ネイティブNode.jsモジュールではなくnet
モジュールを使用する理由の網羅的ではないリストです。
- システムプロキシ設定の自動管理、wpadプロトコルとプロキシpac設定ファイルのサポート。
- HTTPSリクエストの自動トンネリング。
- 基本、ダイジェスト、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)
ClientRequest
を返します
ClientRequest
コンストラクタに直接転送される提供されたoptions
を使用して、ClientRequest
インスタンスを作成します。 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()
// ... use the result.
}
}
このメソッドは、デフォルトセッションからリクエストを発行します。別のセッションからfetch
リクエストを送信するには、ses.fetch()を使用します。
詳細については、MDNのfetch()
ドキュメントを参照してください。
制限事項
net.fetch()
は、data:
またはblob:
スキームをサポートしていません。integrity
オプションの値は無視されます。- 返された
Response
オブジェクトの.type
と.url
の値は正しくありません。
デフォルトでは、net.fetch
で行われたリクエストは、file:
だけでなくカスタムプロトコルにも行うことができ、存在する場合はwebRequestハンドラをトリガーします。 RequestInitで非標準のbypassCustomProtocolHandlers
オプションが設定されている場合、このリクエストのカスタムプロトコルハンドラは呼び出されません。これにより、インターセプトされたリクエストを組み込みハンドラに転送できます。カスタムプロトコルをバイパスする場合でも、webRequestハンドラはトリガーされます。
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 - 解決するホスト名。
Promise<ResolvedHost>を返します - host
の解決されたIPアドレスで解決されます。
このメソッドは、デフォルトセッションからホストを解決します。別のセッションからホストを解決するには、ses.resolveHost()を使用します。
プロパティ
net.online
読み取り専用
boolean
プロパティ。現在インターネットに接続されているかどうか。
false
の戻り値は、ユーザーがリモートサイトに接続できないことを示すかなり強力な指標です。ただし、戻り値true
は決定的ではありません。一部のリンクが稼働していても、特定のリモートサイトへの特定の接続試行が成功するかどうかは不明です。