-
Notifications
You must be signed in to change notification settings - Fork 1
/
blop.js
104 lines (84 loc) · 2.42 KB
/
blop.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;
// 20150526
var gid = {};
var uidcnt = 0;
var sys_id_waiting = null;
app.use(express.static(__dirname + '/public'));
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
io.on('connection', function (socket_server) {
var ip = socket_server.request.connection.remoteAddress;
var cin = false;
var currusr = {};
socket_server.broadcast.emit('user online', uidcnt + 1);
console.log('users online ', uidcnt);
socket_server.on('addin', function (uid) {
currusr.uid = uid;
currusr.servsock = socket_server;
currusr.ip = ip;
currusr.sys_id = new Date().valueOf();
gid[currusr.sys_id] = currusr;
uidcnt = uidcnt + 1;
cin = true;
socket_server.emit('login', currusr.ip);
if (null == sys_id_waiting) {
sys_id_waiting = currusr.sys_id;
} else {
// exchange sys_id
gid[sys_id_waiting].pid = currusr.sys_id;
currusr.pid = sys_id_waiting;
sys_id_waiting = null;
currusr.servsock.emit('ctstgr', {
ip: gid[currusr.pid].ip,
uid: gid[currusr.pid].uid,
});
gid[currusr.pid].servsock.emit('ctstgr', {
ip: currusr.ip,
uid: currusr.uid,
});
}
});
socket_server.on('filp', function (file) {
if (currusr.pid && gid[currusr.pid] && gid[currusr.pid].servsock) {
gid[currusr.pid].servsock.emit('nfilp', {
uid: currusr.uid,
filp: file,
});
}
});
socket_server.on('disconnect', function() {
if (currusr.sys_id != sys_id_waiting) {
if (currusr.pid) {
gid[currusr.pid].servsock.emit('stgrdl');
gid[currusr.pid].pid = null;
if (null == sys_id_waiting) {
sys_id_waiting = currusr.pid;
} else {
gid[sys_id_waiting].pid = currusr.pid;
gid[currusr.pid].pid = sys_id_waiting;
sys_id_waiting = null;
gid[currusr.pid].servsock.emit('ctstgr', {
ip: gid[gid[currusr.pid].pid].ip,
uid: gid[gid[currusr.pid].pid].uid,
})
gid[gid[currusr.pid].pid].servsock.emit('ctstgr', {
ip: gid[currusr.pid].ip,
uid: gid[currusr.pid].uid,
})
}
}
} else {
sys_id_waiting = null;
}
console.log(currusr.uid + ' leaves');
delete gid[currusr.sys_id];
uidcnt = uidcnt - 1;
console.log('users online ', uidcnt);
socket_server.broadcast.emit('user online', uidcnt);
});
});