new WConverhpClient(opt) → {Object}
- Description:
建立Hapi使用者(Node.js與Browser)端物件
- Source:
Example
import path from 'path'
import fs from 'fs'
import _ from 'lodash-es'
import w from 'wsemi'
import WConverhpClient from './src/WConverhpClient.mjs'
let ms = []
let opt = {
url: 'http://localhost:8080',
apiName: 'api',
getToken: () => {
return 'token-for-test'
},
}
//new
let wo = new WConverhpClient(opt)
wo.on('error', (err) => {
console.log(`error`, err)
})
function downloadLargeFile() {
let core = async() => {
await wo.download('id-for-file',
function ({ prog, p, m }) {
// console.log('client web: download: prog', prog, p, m)
if (m === 'download') {
console.log('client web: download: prog', prog)
}
},
{
fdDownload: './', //於nodejs環境才能提供
})
.then(function(res) {
console.log('client web: download: then', res)
ms.push({ 'download output': res })
})
.catch(function (err) {
console.log('client web: download: catch', err)
})
console.log('ms', ms)
}
core()
}
downloadLargeFile()
Parameters:
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
opt |
Object | 輸入設定參數物件 Properties
|
Returns:
回傳事件物件,可使用函數execute、upload、download,可監聽事件error。監聽器須為同步函數,不可為async函數、亦不可回傳promise:事件派發依EventEmitter規範丟棄監聽器之回傳值,其rejection無人觀察,於nodejs即unhandledRejection而使行程崩潰。upload之input可為Blob、File、ArrayBuffer、ArrayBufferView(以位元組計)或字串(以UTF-8位元組計),其餘以錯誤拒絕並發error事件。error事件之契約:每一次請求嘗試失敗恰發一則(execute、upload、download皆同;不分傳輸層失敗如連不上、逾時、HTTP 413或5xx,與伺服器回之業務錯誤如permission denied、應用端拒絕、合併失敗),故一次呼叫最多發1+重試次數則;入口即拒絕者(輸入不支援、無法序列化、未給fdDownload)一則。upload之合併輪詢依設計持續至應用端接受為止,長時間斷線時每一輪查詢皆各自重試並各發事件,事件數因此無上界(與「重試導致等待久」同為刻意),不需要者可不註冊error監聽器
- Type
- Object