支持http断点续传下载,后续支持磁力bt等;后端使用netty框架编写,支持http协议接口认证及调用,支持websocket协议对前端进行主动推送下载进度等信息;
1.项目结构:
分别为公共模块,核心模块还有web端显示仪表模块;
2.从main方法入口类来看:
3.netty服务器配置:
4.http接收下载服务后大致步骤:
1.生成下载文件任务状态文件job.json;
2.检测该下载是否正常;
3.写入文件到临时文件,并生成该文件独有配置文件,支持断点续传;
4.下载完毕进行合并删除临时文件;
5.实时计算下载速率与进度;
关注点:全局状态文件的修改使用到了随机文件锁避免并发修改;任务的销毁等主要线程的安全销毁动作;
5.websocket功能:
1.监测所有文件的下载,暂停,删除等命令,进行实时推送到web端;
关注点: 以下代码如果控制websocket的连接数,会出现问题,这里会把http连接也会实时加进来,因为websocket也是http协议的一种;所以换种思路可以在接收websocket的ping信息时进行统计阻止;
6.还没搞:
1.没有完善登陆页面,目前只是使用固定token进行登陆;
2.目前只是功能完成,需要进一步重构优化代码;
github :
喜欢点星星
本文由 GY 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2021/11/19 15:26