Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
谢庭 authored and 谢庭 committed Dec 18, 2017
1 parent 66a8c19 commit 20a21ed
Show file tree
Hide file tree
Showing 8 changed files with 1,851 additions and 213 deletions.
1,942 changes: 1,740 additions & 202 deletions dist/pear-player.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/pear-player.min.js

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions docs/change-log.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
### 2.4.7
- 修改流量上报接口端口号

### 2.4.6
- 增加节点流量上报功能
- 修正速度统计的bug

### 2.4.5
- 优化调度算法,显著提高下载速度
- 解决不传入opts报错的bug
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{
"name": "pearplayer",
"version": "2.4.5",
"version": "2.4.7",
"description": "",
"main": "./dist/pear-player.js",
"dependencies": {
"axios": "^0.17.1",
"babili": "^0.1.4",
"blueimp-md5": "^2.7.0",
"buffer": "^5.0.6",
Expand Down
10 changes: 5 additions & 5 deletions src/dispatcher.js
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ Dispatcher.prototype._setupHttp = function (hd) {
if (fogRatio >= self.fogRatio) {
self.emit('fograte', fogRatio);
}
self.emit('fogspeed', self.downloaders.getCurrentSpeed([1, 2]));
self.emit('fogspeed', self.downloaders.getCurrentSpeed([1]));
hd.type === 1 ? self.bufferSources[index] = 'n' : self.bufferSources[index] = 'b';
} else {
self.emit('cloudspeed', self.downloaders.getCurrentSpeed([0]));
Expand Down Expand Up @@ -487,7 +487,7 @@ Dispatcher.prototype._setupDC = function (jd) {
if (fogRatio >= self.fogRatio) {
self.emit('fograte', fogRatio);
}
self.emit('fogspeed', self.downloaders.getCurrentSpeed([1,2]));
self.emit('fogspeed', self.downloaders.getCurrentSpeed([2]));
self.bufferSources[index] = 'd';
self.emit('buffersources', self.bufferSources);
self.emit('sourcemap', 'd', index);
Expand Down Expand Up @@ -553,7 +553,7 @@ Dispatcher.prototype.addTorrent = function (torrent) {
self.emit('fograte', fogRatio);
}
// debug('torrent.downloadSpeed:'+torrent.downloadSpeed/1024);
self.emit('fogspeed', self.downloaders.getCurrentSpeed([1, 2]) + torrent.downloadSpeed/1024);
self.emit('fogspeed', torrent.downloadSpeed/1024);
self.bufferSources[index] = 'b';
self.emit('buffersources', self.bufferSources);
self.emit('sourcemap', 'b', index);
Expand Down Expand Up @@ -701,12 +701,12 @@ Array.prototype.getCurrentSpeed = function (typeArr) { //根据传
if (typeArr) {
for (var i = 0; i < this.length; i++) {
if (typeArr.indexOf(this[i].type) >= 0) {
sum+=this[i].meanSpeed;
sum+=this[i].speed;
}
}
} else {
for (var i = 0; i < this.length; i++) {
sum+=this[i].meanSpeed;
sum+=this[i].speed;
}
}
return Math.floor(sum);
Expand Down
1 change: 1 addition & 0 deletions src/index.downloader.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ function PearDownloader(urlStr, token, opts) {
if (!(self instanceof PearDownloader)) return new PearDownloader(urlStr, token, opts);
// if (!(self instanceof PearPlayer)) return new PearPlayer(selector, opts);
if (typeof token === 'object') return PearDownloader(urlStr, '', token);
if (!opts) opts = {};
if (opts.debug) {
debug.enable('pear:*');
} else {
Expand Down
63 changes: 63 additions & 0 deletions src/reporter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/**
* Created by xieting on 2017/12/7.
*/

var debug = require('debug')('pear:reporter');
var axios = require('axios');

axios.defaults.baseURL = 'https://statdapi.webrtc.win:9801';


var totalReportTraffic = 0;

function reportTraffic(uuid, fileSize, traffics) {
var temp = 0;
for (var i=0; i<traffics.length; ++i) {
temp += traffics[i].traffic;
}
if (temp >= totalReportTraffic + 10485760) { //如果流量增加大于10
var body = JSON.stringify({
uuid: uuid,
size: Number(fileSize),
traffic: traffics
});
axios({
method: 'post',
url: '/traffic',
data: body
})
.then(function(response) {
debug('reportTraffic response:'+JSON.stringify(response)+' temp:'+temp+' totalReportTraffic:'+totalReportTraffic);
if (response.status == 200) {
totalReportTraffic = temp;
}
});
}
}

function finalyReportTraffic(uuid, fileSize, traffics) {
var body = JSON.stringify({
uuid: uuid,
size: Number(fileSize),
traffic: traffics
});
axios({
method: 'post',
url: '/traffic',
data: body
})
.then(function(response) {
if (response.status == 200) {
debug('finalyReportTraffic');
}
});
}

module.exports = {

reportTraffic : reportTraffic,
finalyReportTraffic: finalyReportTraffic
};



36 changes: 32 additions & 4 deletions src/worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ var EventEmitter = require('events').EventEmitter;
var Set = require('./set');
var PearTorrent = require('./pear-torrent');
var Scheduler = require('./node-scheduler');
var Reporter = require('./reporter');

// var WEBSOCKET_ADDR = 'ws://signal.webrtc.win:9600/ws'; //test
var WEBSOCKET_ADDR = 'wss://signal.webrtc.win:7601/wss';
Expand Down Expand Up @@ -97,7 +98,8 @@ function Worker(urlStr, token, opts) {
usefulHTTPAndHTTPS: 0,
windowOffset: 0,
windowLength: 0,
signalServerConnected: false
signalServerConnected: false,
traffics: {}
};

self._start();
Expand Down Expand Up @@ -447,9 +449,17 @@ Worker.prototype._startPlaying = function (nodes) {

self.emit('begin', self.fileLength, chunks);

// if (self.useDataChannel) {
// self._pearSignalHandshake();
// }
//开始上报节点流量
self.reportTrafficId = setInterval(function () {

var traffics = [];
var sourceObj = self._debugInfo.traffics;
for (var mac in sourceObj) {
traffics.push(sourceObj[mac]);
}
// console.warn('traffics:'+JSON.stringify(traffics));
Reporter.reportTraffic(self.peerId, self.fileLength, traffics);
}, 5000);

nodeFilter(self.nodes, function (nodes, fileLength) { //筛选出可用的节点,以及回调文件大小

Expand Down Expand Up @@ -557,6 +567,17 @@ Worker.prototype._startPlaying = function (nodes) {
});
d.once('done', function () {

var traffics = [];
var sourceObj = self._debugInfo.traffics;
for (var mac in sourceObj) {
traffics.push(sourceObj[mac]);
}
// console.warn('traffics:'+JSON.stringify(traffics));
Reporter.finalyReportTraffic(self.peerId, self.fileLength, traffics);
//移除interval
clearInterval(self.reportTrafficId);
self.reportTrafficId = null;

self.emit('done');
});
d.on('downloaded', function (downloaded) {
Expand Down Expand Up @@ -590,6 +611,13 @@ Worker.prototype._startPlaying = function (nodes) {
});
d.on('traffic', function (mac, size, type) {

if (!self._debugInfo.traffics[mac]) {
self._debugInfo.traffics[mac] = {};
self._debugInfo.traffics[mac].mac = mac;
self._debugInfo.traffics[mac].traffic = size;
} else {
self._debugInfo.traffics[mac].traffic += size;
}
self.emit('traffic', mac, size, type);
});
d.on('datachannelerror', function () {
Expand Down

0 comments on commit 20a21ed

Please sign in to comment.