Skip to content

Commit 0dc2333

Browse files
authored
Merge pull request #58 from sfeir-open-source/issue-57-master-second-attempt
Issue 57 master second attempt
2 parents d1b1272 + 2356dc3 commit 0dc2333

File tree

19 files changed

+67
-103
lines changed

19 files changed

+67
-103
lines changed

docs-sources/developers/code/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
- [EventBus](parts/common/event-bus/event-bus.md)
1818
- [EventBusResolver](parts/common/event-bus/event-bus-resolver.md)
1919
- [EventBusPostMessage](parts/common/event-bus/postmessage/event-bus-postmessage.md)
20-
- [SocketEventBusClient](parts/common/event-bus/websockets/event-bus-websockets-client.md)
21-
- [SocketEventBus](parts/common/event-bus/websockets/event-bus-websockets.md)
20+
- [EventBusWebsocketClient](parts/common/event-bus/websockets/event-bus-websockets-client.md)
21+
- [EventBusWebsocketServer](parts/common/event-bus/websockets/event-bus-websockets-server.md)
2222
### Helpers
2323
[Helper functions](parts/common/helpers/helpers.md)

package-lock.json

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
"@webcomponents/webcomponentsjs": "^2.4.1",
9696
"bulma": "^0.8.0",
9797
"express": "^4.17.1",
98-
"lodash": "^4.17.15",
9998
"module-alias": "^2.2.2",
10099
"npm-run-all": "^4.1.5",
101100
"query-selector-shadow-dom": "^0.3.4",

src/client/layouts/presenter/components/notes/notes-slave.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ import { TalkControlSlave } from '@client/talk-control-slave/talk-control-slave'
55

66
export class NotesSlave extends TalkControlSlave {
77
init() {
8-
this.eventBus.on(MASTER_SLAVE_CHANNEL, 'sendNotesToSlave', data => postMessage({ type: 'notesReceived', notes: data }));
8+
this.eventBusSlave.on(MASTER_SLAVE_CHANNEL, 'sendNotesToSlave', data => postMessage({ type: 'notesReceived', notes: data }));
99
}
1010
}

src/client/layouts/presenter/components/timer/timer.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ class TimerComponent extends LitElement {
5050
return time ? (time < 10 ? '0' + time : time) : '00';
5151
}
5252

53-
/****** TIMER FUNCTIONS ******/
5453
startTimer() {
5554
let seconds = 0,
5655
minutes = 0,

src/client/talk-control-master/talk-control-master.js

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export class TalkControlMaster {
1919
querySelectorAllDeep('iframe').forEach(frame => this.frames.push(frame));
2020
this.focusFrame = this.frames.find(frame => frame.getAttribute('focus') !== null) || this.frames[0];
2121

22-
this.eventBus = new EventBusResolver({
22+
this.eventBusMaster = new EventBusResolver({
2323
client: true,
2424
server,
2525
postMessage: {
@@ -50,56 +50,51 @@ export class TalkControlMaster {
5050
*/
5151
afterInitialisation() {
5252
// Forward initialization event to server
53-
this.eventBus.on(MASTER_SLAVE_CHANNEL, 'initialized', data => this.eventBus.emit(MASTER_SERVER_CHANNEL, 'init', data));
54-
// Start listening on keys once the server is initialized
55-
this.eventBus.on(MASTER_SERVER_CHANNEL, 'initialized', () => this.eventBus.on(MASTER_SLAVE_CHANNEL, 'keyboardEvent', this.onKeyboardEvent.bind(this)));
53+
this.eventBusMaster.on(MASTER_SLAVE_CHANNEL, 'initialized', data => this.eventBusMaster.emit(MASTER_SERVER_CHANNEL, 'init', data));
5654
// Forward "gotoSlide" events to slave
57-
this.eventBus.on(MASTER_SERVER_CHANNEL, 'gotoSlide', data => this.eventBus.emit(MASTER_SLAVE_CHANNEL, 'gotoSlide', data));
55+
this.eventBusMaster.on(MASTER_SERVER_CHANNEL, 'gotoSlide', data => this.eventBusMaster.emit(MASTER_SLAVE_CHANNEL, 'gotoSlide', data));
5856
// Forward "showNotes" events to slave
59-
this.eventBus.on(MASTER_SLAVE_CHANNEL, 'sendNotesToMaster', data => this.eventBus.emit(MASTER_SLAVE_CHANNEL, 'sendNotesToSlave', data));
57+
this.eventBusMaster.on(MASTER_SLAVE_CHANNEL, 'sendNotesToMaster', data => this.eventBusMaster.emit(MASTER_SLAVE_CHANNEL, 'sendNotesToSlave', data));
58+
// Start listening on "keyboardEvent" on MASTER_SLAVE_CHANNEL
59+
this.eventBusMaster.on(MASTER_SLAVE_CHANNEL, 'keyboardEvent', this.onKeyboardEvent.bind(this));
6060
}
6161

6262
onKeyboardEvent(event) {
6363
let action = '';
6464
switch (event.key) {
6565
case 'Down': // IE specific value
6666
case 'ArrowDown':
67-
// Do something for "down arrow" key press.
6867
action = 'arrowDown';
6968
break;
7069
case 'Up': // IE specific value
7170
case 'ArrowUp':
72-
// Do something for "up arrow" key press.
7371
action = 'arrowUp';
7472
break;
7573
case 'Left': // IE specific value
7674
case 'ArrowLeft':
77-
// Do something for "left arrow" key press.
7875
action = 'arrowLeft';
7976
break;
8077
case 'Right': // IE specific value
8178
case 'ArrowRight':
82-
// Do something for "right arrow" key press.
8379
action = 'arrowRight';
8480
break;
8581
case ' ':
86-
// Do something for "space" key press
8782
action = 'space';
8883
break;
8984
}
9085
if (action) {
91-
this.eventBus.emit(MASTER_SERVER_CHANNEL, 'keyboardEvent', { key: action });
86+
this.eventBusMaster.emit(MASTER_SERVER_CHANNEL, 'keyboardEvent', { key: action });
9287
}
9388
}
9489

9590
forwardEvents() {
96-
const forward = (key => data => this.eventBus.emit(MASTER_SLAVE_CHANNEL, key, data)).bind(this);
97-
this.eventBus.on(MASTER_SERVER_CHANNEL, 'slideNumber', forward('slideNumber'));
98-
this.eventBus.on(MASTER_SERVER_CHANNEL, 'currentSlide', forward('currentSlide'));
91+
const forward = (key => data => this.eventBusMaster.emit(MASTER_SLAVE_CHANNEL, key, data)).bind(this);
92+
this.eventBusMaster.on(MASTER_SERVER_CHANNEL, 'slideNumber', forward('slideNumber'));
93+
this.eventBusMaster.on(MASTER_SERVER_CHANNEL, 'currentSlide', forward('currentSlide'));
9994
}
10095

10196
onFramesLoaded() {
102-
this.eventBus.emit(MASTER_SLAVE_CHANNEL, 'init');
97+
this.eventBusMaster.emit(MASTER_SLAVE_CHANNEL, 'init');
10398
this.focusFrame.focus();
10499
document.addEventListener('click', () => this.focusFrame.focus());
105100
}

src/client/talk-control-slave/talk-control-slave.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ import config from '@config/config.json';
99
*/
1010
export class TalkControlSlave {
1111
constructor(params = {}) {
12-
this.eventBus = new EventBusResolver({
12+
this.eventBusSlave = new EventBusResolver({
1313
postMessage: {
1414
slave: true
1515
}
1616
});
1717
this.delta = params.delta || 0;
1818
this.engine = EngineResolver.getEngine(params.engineName);
19-
this.eventBus.on(MASTER_SLAVE_CHANNEL, 'init', this.init.bind(this));
19+
this.eventBusSlave.on(MASTER_SLAVE_CHANNEL, 'init', this.init.bind(this));
2020
this._captureKeyboardEvent = this._captureKeyboardEvent.bind(this);
2121
}
2222

@@ -25,11 +25,11 @@ export class TalkControlSlave {
2525
// Send the total slide number
2626
const slides = this.engine.getSlides();
2727
// Emit the initialized event only on the 'main' slave
28-
if (!this.delta) this.eventBus.emit(MASTER_SLAVE_CHANNEL, 'initialized', { slides });
29-
this.eventBus.on(MASTER_SLAVE_CHANNEL, 'gotoSlide', data => {
28+
if (!this.delta) this.eventBusSlave.emit(MASTER_SLAVE_CHANNEL, 'initialized', { slides });
29+
this.eventBusSlave.on(MASTER_SLAVE_CHANNEL, 'gotoSlide', data => {
3030
this.engine.goToSlide(data.slide, this.delta);
3131
if (!this.delta) {
32-
this.eventBus.emit(MASTER_SLAVE_CHANNEL, 'sendNotesToMaster', this.engine.getSlideNotes());
32+
this.eventBusSlave.emit(MASTER_SLAVE_CHANNEL, 'sendNotesToMaster', this.engine.getSlideNotes());
3333
}
3434
});
3535
// Capture all keyboards events and only let go the ones that are not interpreted by us
@@ -47,7 +47,9 @@ export class TalkControlSlave {
4747
// Check if the pressed key should be interpreted
4848
if (keys.includes(event.code)) {
4949
event.stopPropagation();
50-
if (forward) this.eventBus.emit(MASTER_SLAVE_CHANNEL, 'keyboardEvent', { key: event.key, code: event.code });
50+
if (forward) {
51+
this.eventBusSlave.emit(MASTER_SLAVE_CHANNEL, 'keyboardEvent', { key: event.key, code: event.code });
52+
}
5153
}
5254
}
5355
}

src/common/event-bus/event-bus-resolver.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22

3-
import { SocketEventBus } from './websockets/event-bus-websockets.js';
4-
import { SocketEventBusClient } from './websockets/event-bus-websockets-client.js';
3+
import { EventBusWebsocketsServer } from './websockets/event-bus-websockets-server.js';
4+
import { EventBusWebsocketsClient } from './websockets/event-bus-websockets-client.js';
55
import { EventBusPostMessage } from './postmessage/event-bus-postmessage.js';
66

77
export const MASTER_SERVER_CHANNEL = 'MASTER_SERVER_CHANNEL';
@@ -17,13 +17,16 @@ export class EventBusResolver {
1717

1818
if (params.server) {
1919
if (params.client) {
20-
this.channels[MASTER_SERVER_CHANNEL] = new SocketEventBusClient(params.server);
20+
// Master
21+
this.channels[MASTER_SERVER_CHANNEL] = new EventBusWebsocketsClient(params.server);
2122
} else {
22-
this.channels[MASTER_SERVER_CHANNEL] = new SocketEventBus(params.server);
23+
// Server
24+
this.channels[MASTER_SERVER_CHANNEL] = new EventBusWebsocketsServer(params.server);
2325
}
2426
}
2527

2628
if (typeof window != 'undefined') {
29+
// Slave
2730
this.channels[MASTER_SLAVE_CHANNEL] = new EventBusPostMessage(params.postMessage || {});
2831
}
2932
}

src/common/event-bus/websockets/event-bus-websockets-client.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import { EventBus } from '../event-bus';
55

66
/**
77
* @classdesc SocketClient based EventBus implementation
8-
* @class SocketEventBusClient
8+
* @class EventBusWebsocketsClient
99
* @augments EventBus
1010
*/
11-
export class SocketEventBusClient extends EventBus {
11+
export class EventBusWebsocketsClient extends EventBus {
1212
constructor(server) {
1313
super();
1414
this.sockets = [];

src/common/event-bus/websockets/event-bus-websockets.js renamed to src/common/event-bus/websockets/event-bus-websockets-server.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import socketIO, { Socket } from 'socket.io';
55

66
/**
77
* @classdesc Sockets based EventBus implementation
8-
* @class SocketEventBus
8+
* @class EventBusWebsocketsServer
99
* @augments EventBus
1010
*/
11-
export class SocketEventBus extends EventBus {
11+
export class EventBusWebsocketsServer extends EventBus {
1212
/**
1313
* Class constructor
1414
*
@@ -19,15 +19,21 @@ export class SocketEventBus extends EventBus {
1919
this.sockets = [];
2020
this.io = socketIO(server);
2121
this.io.on('connection', socket => {
22-
console.log('### connection');
22+
console.log('### connected', {
23+
id: socket.id,
24+
from: socket.handshake.headers && socket.handshake.headers.referer ? socket.handshake.headers.referer : 'unknown'
25+
});
2326
this.sockets.push(socket);
2427
// Subscribe new socket on existing keys
2528
for (const key in this.callBacks) {
2629
this.on(key, null, socket);
2730
}
2831
// When disconnected, remove socket from the array
2932
socket.on('disconnect', () => {
30-
console.log('### disconnected');
33+
console.log('### disconnected', {
34+
id: socket.id,
35+
from: socket.handshake.headers && socket.handshake.headers.referer ? socket.handshake.headers.referer : 'unknown'
36+
});
3137
const index = this.sockets.indexOf(socket);
3238
this.sockets.splice(index, 1);
3339
});

0 commit comments

Comments
 (0)