5.2 KiB
protocol
The protocol
module can register a custom protocol or intercept an existing
protocol.
An example of implementing a protocol that has the same effect as the
file://
protocol:
var app = require('app');
var path = require('path');
app.on('ready', function() {
var protocol = require('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: This module can only be used after the ready
event was emitted.
Methods
The protocol
module has the following methods:
protocol.registerStandardSchemes(schemes)
schemes
Array - Custom schemes to be registered as standard schemes.
A standard scheme
adheres to what RFC 3986 calls
generic URI syntax. This
includes file:
and filesystem:
.
protocol.registerFileProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
Registers a protocol of scheme
that will send the file as a response. The handler
will be called with handler(request, callback)
when a request
is going to be
created with scheme
and completion
will be called with completion(null)
when scheme
is successfully registered, or completion(error)
when failed.
To handle the request
, the callback
should be called with either the file's
path or an object that has a path
property, e.g. callback(filePath)
or
callback({path: filePath})
.
When callback
is called with nothing, a number, or an object that has an
error
property, the request
will fail with the error
number you
specified. For the available error numbers you can use, please see:
https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h
By default the scheme
is treated like http:
, which is parsed differently
from protocols that follow "generic URI syntax" like file:
, so you probably
want to call protocol.registerStandardSchemes
to have your scheme treated as a
standard scheme.
protocol.registerBufferProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
Registers a protocol of scheme
that will send a Buffer
as a response. The
callback
should be called with either a Buffer
object or an object that
has the data
, mimeType
, and chart
properties.
Example:
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)
Registers a protocol of scheme
that will send a String
as a response. The
callback
should be called with either a String
or an object that has the
data
, mimeType
, and chart
properties.
protocol.registerHttpProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
Registers a protocol of scheme
that will send an HTTP request as a response.
The callback
should be called with an object that has the url
, method
,
referer
, and session
properties.
By default the HTTP request will reuse the current session. If you want the
request to have a different session you should set session
to null
.
protocol.unregisterProtocol(scheme[, completion])
scheme
Stringcompletion
Function (optional)
Unregisters the custom protocol of scheme
.
protocol.isProtocolHandled(scheme, callback)
scheme
Stringcallback
Function
The callback
will be called with a boolean that indicates whether there is
already a handler for scheme
.
protocol.interceptFileProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
Intercepts scheme
protocol and uses handler
as the protocol's new handler
which sends a file as a response.
protocol.interceptStringProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
Intercepts scheme
protocol and uses handler
as the protocol's new handler
which sends a String
as a response.
protocol.interceptBufferProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
Intercepts scheme
protocol and uses handler
as the protocol's new handler
which sends a Buffer
as a response.
protocol.interceptHttpProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)
Intercepts scheme
protocol and uses handler
as the protocol's new handler
which sends a new HTTP request as a response.
protocol.uninterceptProtocol(scheme[, completion])
scheme
Stringcompletion
Function
Remove the interceptor installed for scheme
and restore its original handler.