-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp-server.js
65 lines (51 loc) · 2.02 KB
/
app-server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var express = require('express');
var _ = require('underscore');
var app = express();
var connections = [];
var title = 'Untitled Presentation';
var audience = [];
var speaker = {}; //only 1 speaker so just user an object
app.use(express.static('./public'));
app.use(express.static('./node_modules/bootstrap/dist'));
var server = app.listen(3000);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket){
socket.once('disconnect', function(){
var member = _.findWhere(audience, { id: this.id });
if (member) {
audience.splice(audience.indexOf(member), 1);
io.sockets.emit('audience', audience);
console.log("Left: %s (%s audience members)", member.name, audience.length);
}
connections.splice(connections.indexOf(socket), 1); //gives us the index of the array of the current socket & how many sockets to remove
socket.disconnect();
console.log("Disconnected: %s sockets remaining.", connections.length);
});
socket.on('join', function(payload){
var newMember = {
id: this.id,
name: payload.name,
type: 'member'
};
this.emit('joined', newMember);
audience.push(newMember);
io.sockets.emit('audience', audience);
console.log("Audience Joined: %s", payload.name);
});
socket.on('start', function(payload) {
speaker.name = payload.name; //send speaker name with that payload
speaker.id = this.id;
speaker.type = 'speaker';
this.emit('joined', speaker);
io.sockets.emit('start', {title: title, speaker: speaker.name});
console.log("Presentation Started: '%s' by %s", title, speaker.name);
});
socket.emit('welcome',{
title: title,
audience: audience,
speaker: speaker.name
});
connections.push(socket);
console.log("Connected: %s sockets connected", connections.length);
});
console.log('Polling server is running at "http://localhost:3000"');