使用chromium的原生網路庫發出http / https請求程序:主程序
net
模組是乙個傳送 http(s) 請求的客戶端api。 它類似於node.js的http 和 https 模組 ,但它使用的是chromium原生網路庫來替代node.js的實現,提供更好的網路**支援。
下面是乙個非詳盡的列表, 用於說明為什麼使用net
模組而不是原生node. js 模組:
api元件(包括類,方法,屬性和事件名稱)與node.js中使用的元件相似。
用法示例:
const = require('electron')
const request = net.request('')
request.on('response', (response) => `)
console.log(`headers: $`)
response.on('data', (chunk) => `)
})response.on('end', () => )
})request.end()
})該net
api可以在應用程式發出後才能使用ready
事件。在ready
事件發生前嘗試使用模組將引發錯誤。
在net
模組具有以下方法:
在返回clientrequest
使用options
建立clientrequest
例項, 這些選項直接**到clientrequest
的建構函式。net.request
方法將根據options
物件中的指定協議方案, 去傳送安全和不安全的 http 請求( both secure and insecure http requests)。
發起http/https請求.程序:主程序
clientrequest
實現了writable stream介面, 因此是乙個eventemitter型別.
在options
屬性,如protocol
,host
,hostname
,port
和path
,在 url 模組中會嚴格遵循 node.js 的模式
例如,我們可以建立與github.com相同的請求如下:
const request = net.request()
在
在事件: 'response'
返回:在
事件: "login"
返回:
callback
功能
當身份驗證**請求使用者認證時觸發
使用者證書會呼叫callback
方法:
request.on('login', (authinfo, callback) => )
複製
提供空的憑證將取消請求,並在響應物件上報告乙個身份驗證錯誤:
request.on('response', (response) => `);
response.on('error', (error) => `)
})})request.on('login', (authinfo, callback) => )
複製
在
事件:'finish'
在request
最終的 chunk 資料後寫入request
後觸發
在事件: 'abort'
request
終止時發出。abort
如果request
已經關閉,則不會觸發該事件。
在事件: 'error'
返回:當net
網路模組沒有發出網路請求時會觸發。 通常情況下,當request
請求物件發出乙個error
錯誤事件時,乙個close
關閉事件會隨之發生,並且不會提供響應物件。
在事件: 'close'
作為http 的 request-response 中的最後乙個事件發出。close
事件表明,在request
或response
物件中不會發出更多的事件。
在事件: 'redirect'
返回:伺服器返回重定向響應(例如301永久移動)時發出。呼叫request.followredirect
將繼續進行重定向。如果處理了此事件,則request.followredirect
必須同步呼叫,否則請求將被取消。在在
request.chunkedencoding
乙個boolean
型別的值,指定請求是否將使用 http 分塊傳輸編碼。 預設值為 false. 該屬性是可讀寫的, 但它只能在第一次寫入操作之前設定,因為還沒有寫入 http 頭。 在第一寫入後如果設定chunkedencoding
屬性將引發錯誤。
如果 request 的 body 是乙個大的資料時,強烈建議使用塊編碼。因為資料將以小塊的方式進行傳輸, 而不是在 electron 程序記憶體中內部緩衝。在在
request.setheader(name, value)
新增乙個額外的 http 頭。 the header name will be issued as-is without lowercasing. 它只能在第一次寫入之前呼叫。 在第一次寫入後呼叫此方法將引發錯誤。 如果傳遞的值不是string
, 則會呼叫tostring ()
方法來獲取最終值。
某些標頭禁止由應用程式設定。這些標題在下面列出。在chromium的標頭utils中可以找到有關受限標頭的更多資訊。
此外,也不允許將connection
標頭設定為該值upgrade
。
在request.getheader(name)
返回string
-先前設定的額外標題名稱的值。
在request.removeheader(name)
刪除先前設定的額外標題名稱。只能在首次寫入之前呼叫此方法。首次寫入後嘗試呼叫它會引發錯誤。
在request.write(chunk[, encoding\][, callback])
callback
實質上是為了保持與 node.js api 的相似性而引入的虛函式。 在將chunk
內容傳遞到 chromium 網路層之後, 在下乙個 tick 中非同步呼叫。 與 node.js 實現相反, 不保證chunk
內容在呼叫callback
之前已經被重新整理。
在request.end([chunk\][, encoding][, callback])
傳送請求資料的最後一塊。隨後的寫或結束操作將被禁止。該finish
事件在結束操作之後發出。
在request.abort()
取消正在進行的 http 事務。 如果請求已發出close
事件, 則中止操作將不起作用。 否則正在進行的事件將發出abort
和close
事件。 此外, 如果有乙個正在進行的響應物件, 它將發出aborted
事件。
在request.followredirect()
繼續所有待處理的重定向。只能在'redirect'
活動期間呼叫。
在request.getuploadprogress()
返回object
:
您可以使用此方法獲取使用post
請求的檔案上傳或其他資料傳輸的進度
渲染程序
electron的網路請求
electron的網路請求 使用chromium的原生網路庫發出http https請求 net 模組是乙個傳送 http s 請求的客戶端api。它類似於node.js的http 和 https 模組 但它使用的是chromium原生網路庫來替代node.js的實現,提供更好的網路 支援。例項ge...
Electron開發入門
首先需要安裝nodejs。設定npm,npm config set registry 安裝electron可以有多種方式。第二種方式 通過npm安裝electron 官方入門指南 cd e mkdir electron git clone cd electron quick start npm in...
electron建立選單
menu屬於是主線程下的模組,所以只能在主線程中使用 新建乙個menu.js檔案,然後編寫如下 然後再開啟主程序main.js檔案,在ready生命週期中,直接加入下面的 就可以實現自定義選單了 const template win.loadfile example.html win.on clos...