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)

  • schemes Array - 標準的なスキーマーを登録するためのカスタムスキーマー

標準的なschemeは、RFC 3986で策定しているgeneric URI syntaxに準拠しています。これにはfile:filesystem:を含んでいます。

protocol.registerServiceWorkerSchemes(schemes)

  • schemes Array - サービスワーカーをハンドルするために登録されたカスタムスキーマー

protocol.registerFileProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function (optional)

レスポンスとしてファイルを送信するschemeのプロトコルを登録します。schemerequestが生成された時、handlerhandler(request, callback)で呼び出されます。scheme 登録が成功したり、completion(error)が失敗したときに、completioncompletion(null)で呼び出されます。

  • request Object
    • url String
    • referrer String
    • method String
    • uploadData Array (オプション)
  • callback Function

uploadDatadata オブジェクトの配列です:

  • data Object
    • bytes 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 String
  • handler Function
  • completion Function (optional)

レスポンスとしてBufferを送信するschemeプロトコルを登録します。

callbackは、Bufferオブジェクトまたは、datamimeTypecharsetプロパティを持つオブジェクトのどちらかで呼ばれる必要があることを除いて、この使用方法は、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 String
  • handler Function
  • completion Function (optional)

レスポンスとしてStringを送信するschemeプロトコルを登録します。

callbackは、StringまたはdatamimeTypechartプロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法はregisterFileProtocolと同じです。

protocol.registerHttpProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function (optional)

レスポンスとしてHTTPリクエストを送信するschemeプロトコルを登録します。

callbackは、urlmethodreferreruploadDatasessionプロパティを持つオブジェクトを呼び出す必要があることを除いて、使用方法はregisterFileProtocolと同じです。

  • redirectRequest Object
    • url String
    • method String
    • session Object (オプション)
    • uploadData Object (オプション)

既定では、HTTPリクエストは現在のセッションを再利用します。別のセッションでリクエストをしたい場合、sessionnullを設定する必要があります。

POSTリクエストはuploadDataオブジェクトを提供する必要があります。

  • uploadData object
    • contentType String - コンテンツのMIMEタイプ
    • data String - 送信されるコンテンツ

protocol.unregisterProtocol(scheme[, completion])

  • scheme String
  • completion Function (optional)

schemeのカスタムプロトコルを解除します。

protocol.isProtocolHandled(scheme, callback)

  • scheme String
  • callback Function

schemeのハンドラーがあるかないかを示すブーリアン値でcallbackがコールされます。

protocol.interceptFileProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function (optional)

schemeプロトコルをインターセプタ―し、レスポンスとしてファイルを送信するプロトコルの新しいハンドラーとしてhandlerを使います。

protocol.interceptStringProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function (optional)

schemeプロトコルをインターセプタ―し、レスポンスとしてStringを送信するプロトコルの新しいハンドラーとしてhandlerを使います。

protocol.interceptBufferProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function (optional)

schemeプロトコルをインターセプタ―し、レスポンスとしてBufferを送信するプロトコルの新しいハンドラーとしてhandlerを使います。

protocol.interceptHttpProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function (optional)

schemeプロトコルをインターセプタ―し、レスポンスとして新しいHTTPリクエストを送信するプロトコルの新しいハンドラーとしてhandlerを使います。

protocol.uninterceptProtocol(scheme[, completion])

  • scheme String
  • completion Function

インターセプタ―したインストールされたschemeを削除し、オリジナルハンドラーをリストアします。