-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrealtime.js
39 lines (29 loc) · 903 Bytes
/
realtime.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
var identifier = require('identifier');
function setupRealtime(app, meeting) {
var io = app.get('io');
var rt = io.of('/' + meeting.id);
function acknowledgeAndUpdate(fn) {
var clientModel = meeting.clientModel();
fn(clientModel);
rt.emit('update', clientModel);
}
rt.on('connection', function(socket) {
var clientId = socket.id;
socket.on('identify', function(id, fn) {
clientId = id;
fn(meeting.clientModel());
});
socket.on('sync', function(fn) {
fn(meeting.clientModel());
});
socket.on('join', function(rate, fn) {
meeting.addAttendee(clientId, rate);
acknowledgeAndUpdate(fn);
});
socket.on('leave', function(fn) {
meeting.removeAttendee(clientId);
acknowledgeAndUpdate(fn);
});
});
}
module.exports = exports = setupRealtime;