58 lines
1.3 KiB
JavaScript
58 lines
1.3 KiB
JavaScript
|
const Router = require("koa-router")
|
||
|
const { getQqListData } = require("../util/getList/qq")
|
||
|
const KoaSSEStream = require('koa-sse-stream');
|
||
|
const { dowload } = require("../util/download");
|
||
|
|
||
|
const router = new Router()
|
||
|
const dowloadlist = []
|
||
|
|
||
|
router.get("/getQqList",async (ctx)=>{
|
||
|
let url = ctx.query.url
|
||
|
let list = await getQqListData(url)
|
||
|
ctx.body = list
|
||
|
})
|
||
|
|
||
|
router.get("/startDown",async (ctx)=>{
|
||
|
let title = ctx.query.title
|
||
|
let url = ctx.query.url
|
||
|
dowloadlist.push({
|
||
|
title,url
|
||
|
})
|
||
|
// startDown()
|
||
|
ctx.body={
|
||
|
code:0,
|
||
|
msg:"添加成功"
|
||
|
}
|
||
|
})
|
||
|
// 连接池
|
||
|
const clientList = [];
|
||
|
// koa-sse-stream 配置
|
||
|
const SSE_CONF = {
|
||
|
maxClients: 5, // 最大连接数
|
||
|
pingInterval: 40000 // 重连时间
|
||
|
}
|
||
|
router.get('/msg', KoaSSEStream(SSE_CONF), ctx => {
|
||
|
// 每次连接会进行一个 push
|
||
|
clientList.push(ctx.sse);
|
||
|
})
|
||
|
let start = false
|
||
|
function startDown(){
|
||
|
|
||
|
dowload(dowloadlist[0],(data,isok)=>{
|
||
|
clientList.forEach((i)=>{
|
||
|
i.send(isok ? `${dowloadlist[0]}下载完成` : data )
|
||
|
if(isok){
|
||
|
dowloadlist.shift()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
setInterval(()=>{
|
||
|
if(dowloadlist.length != 0 && !start){
|
||
|
start = true
|
||
|
startDown()
|
||
|
}else if(dowloadlist.length == 0){
|
||
|
start = false
|
||
|
}
|
||
|
},1000)
|
||
|
module.exports = router
|