protocol
模塊可以注冊(cè)一個(gè)自定義協(xié)議,或者使用一個(gè)已經(jīng)存在的協(xié)議.
例子,使用一個(gè)與 file://
功能相似的協(xié)議 :
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')
});
});
注意: 這個(gè)模塊只有在 app
模塊的 ready
事件觸發(fā)之后才可使用.
protocol
模塊有如下方法:
protocol.registerStandardSchemes(schemes)
schemes
Array - 將一個(gè)自定義的方案注冊(cè)為標(biāo)準(zhǔn)的方案.一個(gè)標(biāo)準(zhǔn)的 scheme
遵循 RFC 3986 的 generic URI syntax 標(biāo)準(zhǔn). 這包含了 file:
和 filesystem:
.
protocol.registerServiceWorkerSchemes(schemes)
schemes
Array - 將一個(gè)自定義的方案注冊(cè)為處理 service workers.protocol.registerFileProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (可選)注冊(cè)一個(gè)協(xié)議,用來發(fā)送響應(yīng)文件.當(dāng)通過這個(gè)協(xié)議來發(fā)起一個(gè)請(qǐng)求的時(shí)候,將使用 handler(request, callback)
來調(diào)用 handler
.當(dāng) scheme
被成功注冊(cè)或者完成(錯(cuò)誤)時(shí)失敗,將使用 completion(null)
調(diào)用 completion
.
request
Objecturl
Stringreferrer
Stringmethod
StringuploadData
Array (可選)callback
FunctionuploadData
是一個(gè) data
對(duì)象數(shù)組:
data
Objectbytes
Buffer - 被發(fā)送的內(nèi)容.file
String - 上傳的文件路徑.為了處理請(qǐng)求,調(diào)用 callback
時(shí)需要使用文件路徑或者一個(gè)帶 path
參數(shù)的對(duì)象, 例如 callback(filePath)
或 callback({path: filePath})
.
當(dāng)不使用任何參數(shù)調(diào)用 callback
時(shí),你可以指定一個(gè)數(shù)字或一個(gè)帶有 error
參數(shù)的對(duì)象,來標(biāo)識(shí) request
失敗.你可以使用的 error number 可以參考 net error list.
默認(rèn) scheme
會(huì)被注冊(cè)為一個(gè) http:
協(xié)議,它與遵循 "generic URI syntax" 規(guī)則的協(xié)議解析不同,例如 file:
,所以你或許應(yīng)該調(diào)用 protocol.registerStandardSchemes
來創(chuàng)建一個(gè)標(biāo)準(zhǔn)的 scheme.
protocol.registerBufferProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (可選)注冊(cè)一個(gè) scheme
協(xié)議,用來發(fā)送響應(yīng) Buffer
.
這個(gè)方法的用法類似 registerFileProtocol
,除非使用一個(gè) Buffer
對(duì)象,或一個(gè)有 data
, mimeType
, 和 charset
屬性的對(duì)象來調(diào)用 callback
.
例子:
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 (可選)注冊(cè)一個(gè) scheme
協(xié)議,用來發(fā)送響應(yīng) String
.
這個(gè)方法的用法類似 registerFileProtocol
,除非使用一個(gè) String
對(duì)象,或一個(gè)有 data
, mimeType
, 和 charset
屬性的對(duì)象來調(diào)用 callback
.
protocol.registerHttpProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (可選)注冊(cè)一個(gè) scheme
協(xié)議,用來發(fā)送 HTTP 請(qǐng)求作為響應(yīng).
這個(gè)方法的用法類似 registerFileProtocol
,除非使用一個(gè) redirectRequest
對(duì)象,或一個(gè)有 url
, method
, referrer
, uploadData
和 session
屬性的對(duì)象來調(diào)用 callback
.
redirectRequest
Objecturl
Stringmethod
Stringsession
Object (可選)uploadData
Object (可選)默認(rèn)這個(gè) HTTP 請(qǐng)求會(huì)使用當(dāng)前 session .如果你想使用不同的session值,你應(yīng)該設(shè)置 session
為 null
.
POST 請(qǐng)求應(yīng)當(dāng)包含 uploadData
對(duì)象.
uploadData
objectcontentType
String - 內(nèi)容的 MIME type.data
String - 被發(fā)送的內(nèi)容.protocol.unregisterProtocol(scheme[, completion])
scheme
Stringcompletion
Function (可選)注銷自定義協(xié)議 scheme
.
protocol.isProtocolHandled(scheme, callback)
scheme
Stringcallback
Function將使用一個(gè)布爾值來調(diào)用 callback
,這個(gè)布爾值標(biāo)識(shí)了是否已經(jīng)存在 scheme
的句柄了.
protocol.interceptFileProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (可選)攔截 scheme
協(xié)議并且使用 handler
作為協(xié)議的新的句柄來發(fā)送響應(yīng)文件.
protocol.interceptStringProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (可選)攔截 scheme
協(xié)議并且使用 handler
作為協(xié)議的新的句柄來發(fā)送響應(yīng) String
.
protocol.interceptBufferProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (可選)攔截 scheme
協(xié)議并且使用 handler
作為協(xié)議的新的句柄來發(fā)送響應(yīng) Buffer
.
protocol.interceptHttpProtocol(scheme, handler[, completion])
scheme
Stringhandler
Functioncompletion
Function (optional)攔截 scheme
協(xié)議并且使用 handler
作為協(xié)議的新的句柄來發(fā)送新的響應(yīng) HTTP 請(qǐng)求. 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 取消對(duì) scheme
的攔截,使用它的原始句柄進(jìn)行處理.
更多建議: