-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
77 lines (67 loc) · 2.11 KB
/
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
66
67
68
69
70
71
72
73
74
75
76
77
'use strict';
var DEBUG = 1,
express = require('express'),
app = express(),
server = app.listen(1234),
cdate = Date.now(),
cpl = {},
pcstate = {};
app.use(express.static('public'));
if(!DEBUG) {
console = {};
console.info = function(){};
console.log = function(){};
console.warn = function(){};
console.error = function(){};
}
console.info('\nMSR test server running.')
var socket = require('socket.io', { rememberTransport: false, transports: ['WebSocket', 'Flash Socket', 'AJAX long-polling'] }),
io = socket(server);
io.of('/awa');
io.on('connection', newConnection);
function newConnection(socket) {
let ipa = socket.handshake.address,
sipa = ipa.substring(7),
proom = 'Default';
console.info('\n===\nNuevo cliente\nID: '+ socket.id + '\nIP: '+ sipa + '\n===')
socket
.on('drawing', mouseMsg)
.on('clear', clearMsg)
.on('joinRoom', function(roomN) {
let room = roomN || 'Default'
console.info('room: '+room+', id: '+socket.id);
cpl = {'pid':socket.id,'date':cdate,'croom':room,'proom':proom}
if (room != proom) {
socket.leave(proom).join(room);
socket.emit('message', cpl);
socket.emit('restoreState', pcstate);
clearMsg(true)
} else {
socket.emit('message', cpl);
}
proom = room;
})
.on('saveState', saveState);
function saveState(data) {
pcstate[data.room] = data;
let datas = {
'metai': pcstate[data.room],
'date': cdate,
'pid': socket.id,
'IP': sipa
}
socket.emit('message', datas);
console.info('save: ', datas)
}
function mouseMsg(data) {
socket.to(proom).emit('drawing', data);
console.info('\n===\nProcesando:\nID: ' + socket.id + '\nIP: ' + sipa + '\nRoom: ',socket.rooms, '\ndata:', data,'\n===');
}
function clearMsg(slf) {
if(slf){
return socket.emit('clear','self');
}
io.in(proom).emit('clear');
console.info('Clear broadcasted')
}
}