sync server-side speaker notes after notes window opens

edit
Hakim El Hattab 2014-05-04 10:10:21 +02:00
parent 5e85f02eb1
commit 3eb7038a15
3 changed files with 26 additions and 5 deletions

View File

@ -36,10 +36,15 @@
messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
}
socket.emit( 'state', messageData );
socket.emit( 'statechanged', messageData );
}
// When a new notes window connects, post our current state
socket.on( 'connect', function( data ) {
post();
} );
// Monitor events that trigger a change in state
Reveal.addEventListener( 'slidechanged', post );
Reveal.addEventListener( 'fragmentshown', post );

View File

@ -16,8 +16,12 @@ var opts = {
io.sockets.on( 'connection', function( socket ) {
socket.on( 'state', function( state ) {
socket.broadcast.emit( 'state', state );
socket.on( 'connect', function( data ) {
socket.broadcast.emit( 'connect', data );
});
socket.on( 'statechanged', function( data ) {
socket.broadcast.emit( 'statechanged', data );
});
});

View File

@ -187,7 +187,7 @@
var socket = io.connect( window.location.origin ),
socketId = '{{socketId}}';
socket.on( 'state', function( data ) {
socket.on( 'statechanged', function( data ) {
// ignore data from sockets that aren't ours
if( data.socketId !== socketId ) { return; }
@ -206,6 +206,18 @@
} );
window.addEventListener( 'message', function( event ) {
var data = JSON.parse( event.data );
if( data && data.namespace === 'reveal' ) {
if( /ready/.test( data.eventName ) ) {
socket.emit( 'connect', { socketId: socketId } );
}
}
} );
/**
* Called when the main window sends an updated state.
*/
@ -266,7 +278,7 @@
].join( '&' );
var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = '/?' + params + hash;
var currentURL = '/?' + params + '&postMessageEvents=true' + hash;
var upcomingURL = '/?' + params + '&controls=false' + hash;
currentSlide = document.createElement( 'iframe' );