protocol
protocol
モジュールはカスタムプロトコルを登録したり、または既存のプロトコルをインターセプタ―することができます。
file://
プロトコルの同様の効果をもつプロトコルを実装した例です。
const {app} = require('electron')
const path = require('path')
app.on('ready', function () {
var protocol = electron.protocol
protocol.registerFileProtocol('atom', function (request, callback) {
var url = request.url.substr(7)
callback({path: path.join(__dirname, url)})
}, function (error) {
if (error) console.error('Failed to register protocol')
})
})
Note: このモジュールは、app
モジュールでready
イベントが出力された後のみ使うことができます。
メソッド
protocol
モジュールは、次のメソッドを持ちます。
protocol.registerStandardSchemes(schemes)
schemes
Array - 標準的なスキーマーを登録するためのカスタムスキーマー
標準的なscheme
は、RFC 3986で策定しているgeneric URI syntaxに準拠しています。これにはfile:
と filesystem:
を含んでいます。
protocol.registerServiceWorkerSchemes(schemes)
schemes
Array - サービスワーカーをハンドルするために登録されたカスタムスキーマー
protocol.registerFileProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
レスポンスとしてファイルを送信するscheme
のプロトコルを登録します。scheme
でrequest
が生成された時、handler
はhandler(request, callback)
で呼び出されます。scheme
登録が成功したり、completion(error)
が失敗したときに、completion
はcompletion(null)
で呼び出されます。
request
Objecturl
Stringreferrer
Stringmethod
StringuploadData
Array (オプション)
callback
Function
uploadData
は data
オブジェクトの配列です:
data
Objectbytes
Buffer - 送信するコンテンツfile
String - アップロードするファイルパス
request
をハンドルするために、callback
はファイルパスまたはpath
プロパティを持つオブジェクトで呼び出すべきです。例えば、callback(filePath)
またはcallback({path: filePath})
です。
何もなし、数字、error
プロパティを持つオブジェクトで、callback
が呼び出された時、 request
は指定したerror
番号で失敗します。使用できる提供されているエラー番号は、net error listを参照してください。
既定では、scheme
は、file:
のような一般的なURIの構文に続くプロトコルと違う解析がされ、http:
のように扱われます。なので、恐らく標準的なスキーマーのように扱われるスキーマーを持つために、protocol.registerStandardSchemes
を呼び出したくなります。
protocol.registerBufferProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
レスポンスとしてBuffer
を送信するscheme
プロトコルを登録します。
callback
は、Buffer
オブジェクトまたは、data
とmimeType
、 charset
プロパティを持つオブジェクトのどちらかで呼ばれる必要があることを除いて、この使用方法は、registerFileProtocol
と同じです。
例:
protocol.registerBufferProtocol('atom', function (request, callback) {
callback({mimeType: 'text/html', data: new Buffer('<h5>Response</h5>')})
}, function (error) {
if (error) console.error('Failed to register protocol')
})
protocol.registerStringProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
レスポンスとしてString
を送信するscheme
プロトコルを登録します。
callback
は、String
またはdata
と mimeType
、chart
プロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法はregisterFileProtocol
と同じです。
protocol.registerHttpProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
レスポンスとしてHTTPリクエストを送信するscheme
プロトコルを登録します。
callback
は、url
とmethod
、referrer
、uploadData
、session
プロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法はregisterFileProtocol
と同じです。
redirectRequest
Objecturl
Stringmethod
Stringsession
Object (オプション)uploadData
Object (オプション)
既定では、HTTPリクエストは現在のセッションを再利用します。別のセッションでリクエストをしたい場合、session
に null
を設定する必要があります。
POSTリクエストはuploadData
オブジェクトを提供する必要があります。
uploadData
objectcontentType
String - コンテンツのMIMEタイプdata
String - 送信されるコンテンツ
protocol.unregisterProtocol(scheme[, completion])
scheme
Stringcompletion
Function (optional)
scheme
のカスタムプロトコルを解除します。
protocol.isProtocolHandled(scheme, callback)
scheme
Stringcallback
Function
scheme
のハンドラーがあるかないかを示すブーリアン値でcallback
がコールされます。
protocol.interceptFileProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
scheme
プロトコルをインターセプタ―し、レスポンスとしてファイルを送信するプロトコルの新しいハンドラーとしてhandler
を使います。
protocol.interceptStringProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
scheme
プロトコルをインターセプタ―し、レスポンスとしてString
を送信するプロトコルの新しいハンドラーとしてhandler
を使います。
protocol.interceptBufferProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
scheme
プロトコルをインターセプタ―し、レスポンスとしてBuffer
を送信するプロトコルの新しいハンドラーとしてhandler
を使います。
protocol.interceptHttpProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
scheme
プロトコルをインターセプタ―し、レスポンスとして新しいHTTPリクエストを送信するプロトコルの新しいハンドラーとしてhandler
を使います。
protocol.uninterceptProtocol(scheme[, completion])
scheme
Stringcompletion
Function
インターセプタ―したインストールされたscheme
を削除し、オリジナルハンドラーをリストアします。