diff --git a/src/lib/site/tools.js b/src/lib/site/tools.js index 36c6ab3..effdceb 100644 --- a/src/lib/site/tools.js +++ b/src/lib/site/tools.js @@ -3,6 +3,62 @@ import axios from 'axios' import parser from 'fast-xml-parser' import cheerio from 'cheerio' +// 请求超时时限 +axios.defaults.timeout = 5000 + +// 重试次数,共请求3次 +axios.defaults.retry = 2 + +// 请求的间隙 +axios.defaults.retryDelay = 1000 + +// 添加请求拦截器(配置发送请求的信息) +axios.interceptors.request.use(function (config) { + // 处理请求之前的配置 + // 引入代理,播放器代理怎么搞? + return config +}, function (error) { + // 请求失败的处理 + return Promise.reject(error) +}) + +// 添加响应拦截器 +axios.interceptors.response.use(function (response) { + // 对响应数据做些事 + if (response.status && response.status === 200 && response.request.responseURL.includes('api.php') && !response.data.startsWith('= config.retry) { + err.message = '多次请求均超时' + return Promise.reject(err) + } + + config.__retryCount += 1 + + var backoff = new Promise(function (resolve) { + setTimeout(function () { + resolve() + }, config.retryDelay || 1) + }) + + return backoff.then(function () { + return axios(config) + }) + } else { + if (err && !err.response) { + err.message = '连接服务器失败!' + } + return Promise.reject(err) + } +}) + const zy = { xmlConfig: { // XML 转 JSON 配置 trimValues: true,