protocol
protocolモジュールはカスタムプロトコルを登録したり、または既存のプロトコルをインターセプタ―することができます。
file://プロトコルの同様の効果をもつプロトコルを実装した例です。
const electron = require('electron');
const app = electron.app;
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.normalize(__dirname + '/' + url)});
}, function (error) {
if (error)
console.error('Failed to register protocol')
});
});
Note: このモジュールは、appモジュールでreadyイベントが出力された後のみ使うことができます。
メソッド
protocolモジュールは、次のメソッドを持ちます。
protocol.registerStandardSchemes(schemes)
schemesArray - 標準的なスキーマーを登録するためのカスタムスキーマー
標準的なschemeは、RFC 3986で策定しているgeneric URI syntaxに準拠しています。これにはfile: と filesystem:を含んでいます。
protocol.registerServiceWorkerSchemes(schemes)
schemesArray - サービスワーカーをハンドルするために登録されたカスタムスキーマー
protocol.registerFileProtocol(scheme, handler[, completion])
schemeStringhandlerFunctioncompletionFunction (optional)
レスポンスとしてファイルを送信するschemeのプロトコルを登録します。schemeでrequestが生成された時、handlerはhandler(request, callback)で呼び出されます。scheme 登録が成功したり、completion(error)が失敗したときに、completion はcompletion(null)で呼び出されます。
requestObjecturlStringreferrerStringmethodStringuploadDataArray (オプション)
callbackFunction
uploadData は data オブジェクトの配列です:
dataObjectbytesBuffer - 送信するコンテンツfileString - アップロードするファイルパス
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])
schemeStringhandlerFunctioncompletionFunction (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])
schemeStringhandlerFunctioncompletionFunction (optional)
レスポンスとしてStringを送信するschemeプロトコルを登録します。
callbackは、Stringまたはdataと mimeType、chartプロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法はregisterFileProtocolと同じです。
protocol.registerHttpProtocol(scheme, handler[, completion])
schemeStringhandlerFunctioncompletionFunction (optional)
レスポンスとしてHTTPリクエストを送信するschemeプロトコルを登録します。
callbackは、urlとmethod、referrer、uploadData、sessionプロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法はregisterFileProtocolと同じです。
redirectRequestObjecturlStringmethodStringsessionObject (オプション)uploadDataObject (オプション)
既定では、HTTPリクエストは現在のセッションを再利用します。別のセッションでリクエストをしたい場合、session に nullを設定する必要があります。
POSTリクエストはuploadDataオブジェクトを提供する必要があります。
uploadDataobjectcontentTypeString - コンテンツのMIMEタイプdataString - 送信されるコンテンツ
protocol.unregisterProtocol(scheme[, completion])
schemeStringcompletionFunction (optional)
schemeのカスタムプロトコルを解除します。
protocol.isProtocolHandled(scheme, callback)
schemeStringcallbackFunction
schemeのハンドラーがあるかないかを示すブーリアン値でcallbackがコールされます。
protocol.interceptFileProtocol(scheme, handler[, completion])
schemeStringhandlerFunctioncompletionFunction (optional)
schemeプロトコルをインターセプタ―し、レスポンスとしてファイルを送信するプロトコルの新しいハンドラーとしてhandlerを使います。
protocol.interceptStringProtocol(scheme, handler[, completion])
schemeStringhandlerFunctioncompletionFunction (optional)
schemeプロトコルをインターセプタ―し、レスポンスとしてStringを送信するプロトコルの新しいハンドラーとしてhandlerを使います。
protocol.interceptBufferProtocol(scheme, handler[, completion])
schemeStringhandlerFunctioncompletionFunction (optional)
schemeプロトコルをインターセプタ―し、レスポンスとしてBufferを送信するプロトコルの新しいハンドラーとしてhandlerを使います。
protocol.interceptHttpProtocol(scheme, handler[, completion])
schemeStringhandlerFunctioncompletionFunction (optional)
schemeプロトコルをインターセプタ―し、レスポンスとして新しいHTTPリクエストを送信するプロトコルの新しいハンドラーとしてhandlerを使います。
protocol.uninterceptProtocol(scheme[, completion])
schemeStringcompletionFunction
インターセプタ―したインストールされたschemeを削除し、オリジナルハンドラーをリストアします。