协议

    例子,使用一个与 file:// 功能相似的协议 :

    注意: 这个模块只有在 app 模块的 ready 事件触发之后才可使用.

    protocol 模块有如下方法:

    • schemes Array - 将一个自定义的方案注册为标准的方案.
      一个标准的 scheme 遵循 RFC 3986 的generic URI syntax 标准. 这包含了 file:filesystem:.

    protocol.registerServiceWorkerSchemes(schemes)

    • schemes Array - 将一个自定义的方案注册为处理 service workers.

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

    • scheme String
    • handler Function
    • completion Function (可选)
      注册一个协议,用来发送响应文件.当通过这个协议来发起一个请求的时候,将使用 handler(request, callback) 来调用handler .当 scheme 被成功注册或者完成(错误)时失败,将使用 completion(null) 调用 completion.

      • url String
      • referrer String
      • uploadData Array (可选)
    • callback Function
      uploadData 是一个 data 对象数组:

    • data Object

      • bytes Buffer - 被发送的内容.
      • file String - 上传的文件路径.
        为了处理请求,调用 callback 时需要使用文件路径或者一个带 path 参数的对象, 例如 callback(filePath)callback({path: filePath}).

    当不使用任何参数调用 callback 时,你可以指定一个数字或一个带有 error 参数的对象,来标识 request 失败.你可以使用的 error number 可以参考 .

    默认 scheme 会被注册为一个 http: 协议,它与遵循 "generic URI syntax" 规则的协议解析不同,例如 file: ,所以你或许应该调用 protocol.registerStandardSchemes 来创建一个标准的 scheme.

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

    • scheme String
    • Function
    • completion Function (可选)
      注册一个 scheme 协议,用来发送响应 Buffer .

    例子:

    1. protocol.registerBufferProtocol('atom', function(request, callback) {
    2. callback({mimeType: 'text/html', data: new Buffer('<h5>Response</h5>')});
    3. }, function (error) {
    4. if (error)
    5. console.error('Failed to register protocol')
    6. });
    • scheme String
    • handler Function
    • completion Function (可选)
      注册一个 scheme 协议,用来发送响应 String .

    这个方法的用法类似 registerFileProtocol,除非使用一个 String 对象,或一个有 data,mimeType, 和 charset 属性的对象来调用 callback .

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

    • scheme String
    • handler Function
    • completion Function (可选)
      注册一个 scheme 协议,用来发送 HTTP 请求作为响应.

    这个方法的用法类似 registerFileProtocol,除非使用一个 redirectRequest 对象,或一个有 url, method,referrer, uploadDatasession 属性的对象来调用 callback .

    • redirectRequest Object
      • url String
      • session Object (可选)
      • uploadData Object (可选)
        默认这个 HTTP 请求会使用当前 session .如果你想使用不同的session值,你应该设置 sessionnull.

    POST 请求应当包含 uploadData 对象.

    • uploadData object
      • contentType String - 内容的 MIME type.
      • data String - 被发送的内容.

    protocol.unregisterProtocol(scheme[, completion])

    • scheme String
    • completion Function (可选)
      注销自定义协议 scheme.

    protocol.isProtocolHandled(scheme, callback)

    • scheme String
    • callback Function
      将使用一个布尔值来调用 callback ,这个布尔值标识了是否已经存在 scheme 的句柄了.
    • scheme String
    • handler Function
    • completion Function (可选)
      拦截 scheme 协议并且使用 handler 作为协议的新的句柄来发送响应文件.

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

    • scheme String
    • handler Function
    • completion Function (可选)
      拦截 scheme 协议并且使用 handler 作为协议的新的句柄来发送响应 String.

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

    • scheme String
    • handler Function
    • completion Function (可选)
      拦截 scheme 协议并且使用 handler 作为协议的新的句柄来发送响应 Buffer.

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

    • scheme String
    • handler Function
    • completion Function (optional)
      拦截 scheme 协议并且使用 handler 作为协议的新的句柄来发送新的响应 HTTP 请求.Intercepts scheme protocol and uses handler as the protocol's new handlerwhich sends a new HTTP request as a response.
    • scheme String