Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
msokk committed Mar 25, 2012
2 parents 478c103 + 5e36828 commit 3d4b643
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 18 deletions.
11 changes: 7 additions & 4 deletions lib/backend/server.js
Expand Up @@ -118,7 +118,7 @@ io.of('/master').on('connection', function(socket) {
};
channels[name].lastPayload = payload;
io.of('/client').in(name).emit('payload', payload);
cb(null);
if(cb)cb(null);
});
});

Expand Down Expand Up @@ -174,9 +174,12 @@ io.of('/client').on('connection', function(socket) {
socket.get('channel', function(err, name) {
if(channels[name] && channels[name].trackToLoad) {
socket.emit('load', channels[name].trackToLoad);
if(channels[name].lastPayload){
socket.emit('payload', channels[name].lastPayload);
}
setTimeout(function(){
if(channels[name].lastPayload){
console.log('playerread', channels[name].lastPayload);
socket.emit('payload', channels[name].lastPayload);
}
},400);
}
});
});
Expand Down
1 change: 1 addition & 0 deletions lib/public/index.html
Expand Up @@ -59,6 +59,7 @@ <h1 id="title"></h1>
<span id="readySpeakers" class="counter" title="Ready speakers">0</span>
<span id="totalSpeakers" class="counter" title="Total speakers">0</span>
</div>

</div>

<!-- JavaScript at the bottom for fast page loading -->
Expand Down
46 changes: 32 additions & 14 deletions lib/public/js/app_client.js
Expand Up @@ -77,11 +77,12 @@ $(function() {
ms.playTime = ms.timesync.getTime();
ms.playOffset = -diff;
ms.playing = true;
ms.trigger('play', payload.part, -diff);
console.log('play '+ diff+' '+(payload.timestamp - ms.timesync.getTime())+' '+ms.timesync.getTime());
ms.playTrack(payload.part, -diff);
//ms.trigger('play', payload.part, -diff);
//console.log('play '+ diff+' '+(payload.timestamp - ms.timesync.getTime())+' '+ms.timesync.getTime());
}
else if(payload.type=='stop'){
ms.trigger('stop', -diff);
ms.stopTrack();
ms.playing = false;
}
ms.payloadQueue[i].done = true;
Expand All @@ -97,9 +98,12 @@ $(function() {
console.log('loaded ' + JSON.stringify(arguments));
ms.payloadQueue = [];
ms.loaded = false;
var audioReady = function() {
ms.isloading = true;
ms.track = track;
ms.audioReady = function() {
ms.isloading = false;
console.log('audio is ready');
ms.player.context.removeEventListener('canplaythrough', audioReady);
//ms.player.context.removeEventListener('canplaythrough', audioReady);
track.loaded = true;
ms.loadedTrack = track;
ms.loaded = true;
Expand All @@ -116,13 +120,13 @@ $(function() {
for (var s in track) {
ms.player.settings[s] = track[s];
}
ms.player.context.addEventListener('canplaythrough', audioReady);
//ms.player.context.addEventListener('canplaythrough', audioReady);
ms.player.context.src = ms.player.resource;
console.log('src='+ ms.player.resource);
},

onQueuePayload: function(payload){
console.log('payload ' + JSON.stringify(arguments));
console.log('payload ' +payload.track);
if (ms.payloadQueue.length && ms.payloadQueue[0].timestamp < payload.timestamp) {
ms.payloadQueue.shift();
}
Expand Down Expand Up @@ -211,9 +215,9 @@ $(function() {
ms.on('payload', ms.onQueuePayload);

// Play and stop request
ms.on('play', ms.playTrack);
ms.on('pause', ms.pauseTrack);
ms.on('stop', ms.stopTrack);
// ms.on('play', ms.playTrack);
// ms.on('pause', ms.pauseTrack);
// ms.on('stop', ms.stopTrack);

ms.on("speakerCount", ms.updateSpeakerCount);
ms.on("loadedCount", ms.updateLoadedCount);
Expand All @@ -230,16 +234,30 @@ $(function() {
if(ms.playing){
diff = (ms.player.context.currentTime-ms.playOffset)*1000 - (ms.timesync.getTime()-ms.playTime) + ms.deviceLatency;
console.log('latency '+(diff-ms.deviceLatency));
if(diff > 0 || diff < -180){
if(diff > 0 || diff < -400){
ms.errors++;
if(ms.errors>10){
if(ms.errors>5){
ms.playing = false;
return ms.player.pause();
ms.player.pause();
//window.location.reload();
}
ms.player.play((ms.playOffset*1000+(ms.timesync.getTime()-ms.playTime)-ms.deviceLatency)/1000,true);
console.log('corrected true');
//ms.player.play(ms.player.context.currentTime + diff/1000,true);
console.log('corrected ' + ms.playOffset+ ' ' + ms.timesync.getTime() +' ' + ms.playTime+' ' +ms.deviceLatency+' ' + (ms.playOffset*1000+(ms.timesync.getTime()-ms.playTime)-ms.deviceLatency)/1000);
}
}

if(ms.isloading && !ms.loaded){
console.log((ms.player.context.readyState == 4)+' '+(ms.player.context.buffered.length)+' '+ (ms.player.context.buffered.end(0))+' '+ (ms.track.duration));
$("#loading").show().html(Math.round(100*(ms.player.context.buffered.end(0) / (ms.track.duration+1))));
if(ms.player.context.readyState == 4 && ms.player.context.buffered.length && ms.player.context.buffered.end(0) >= ms.track.duration){
console.log('audio was ready');
ms.audioReady();
}
}
else{
$("#loading").hide();
}
},1000);

window.addEventListener('pageshow', function(){
Expand Down

0 comments on commit 3d4b643

Please sign in to comment.