sync server-side speaker notes after notes window opens

This commit is contained in:
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'; 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 // Monitor events that trigger a change in state
Reveal.addEventListener( 'slidechanged', post ); Reveal.addEventListener( 'slidechanged', post );
Reveal.addEventListener( 'fragmentshown', post ); Reveal.addEventListener( 'fragmentshown', post );

View file

@ -16,8 +16,12 @@ var opts = {
io.sockets.on( 'connection', function( socket ) { io.sockets.on( 'connection', function( socket ) {
socket.on( 'state', function( state ) { socket.on( 'connect', function( data ) {
socket.broadcast.emit( 'state', state ); 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 ), var socket = io.connect( window.location.origin ),
socketId = '{{socketId}}'; socketId = '{{socketId}}';
socket.on( 'state', function( data ) { socket.on( 'statechanged', function( data ) {
// ignore data from sockets that aren't ours // ignore data from sockets that aren't ours
if( data.socketId !== socketId ) { return; } 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. * Called when the main window sends an updated state.
*/ */
@ -266,7 +278,7 @@
].join( '&' ); ].join( '&' );
var hash = '#/' + data.state.indexh + '/' + data.state.indexv; var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = '/?' + params + hash; var currentURL = '/?' + params + '&postMessageEvents=true' + hash;
var upcomingURL = '/?' + params + '&controls=false' + hash; var upcomingURL = '/?' + params + '&controls=false' + hash;
currentSlide = document.createElement( 'iframe' ); currentSlide = document.createElement( 'iframe' );