-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
65 lines (54 loc) · 1.62 KB
/
index.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
let express = require('express'),
app = express();
http = require('http').Server(app),
io = require('socket.io')(http),
Filter = require('bad-words'),
filter = new Filter();
let messages = [];
app.use(express.static('res'));
app.all('/', (req, res)=>{
res.sendFile(__dirname + "/index.html");
});
const chatSpace = io.of('/chat'),
readers = io.of('/readers');
let participants = new Map(),
keyData = [],
updateDelay = 30,
decay = 1000,
maxQueueLength = 30;
readers.on('connection', (socket)=>{
console.log('Reader connected');
socket.on('disconnect', (socket)=>{
console.log('Reader disconnected');
});
});
let update = setInterval( ()=>{
readers.emit('key_data', keyData.join());
}, updateDelay);
let clearList = setInterval( ()=>{
keyData.shift();
}, decay);
chatSpace.on('connection', (socket)=>{
console.log('User connected');
participants.set(socket.id, (new Date).getTime());
socket.on('disconnect', (socket)=>{
console.log('User disconnected');
});
socket.on('message_sent', (message)=>{
//console.log("MESSAGE");
let timeSinceLast = (new Date).getTime() - participants.get(socket.id);
if(timeSinceLast > updateDelay){
participants.set(socket.id, (new Date).getTime());
let keyLetter = (""+message.body).trim().toLowerCase().charAt(0);
if(keyData.length >= maxQueueLength){
keyData.shift();
}
keyData.push(keyLetter);
// console.log(keyData);
chatSpace.emit("message_received", `${filter.clean(message.username)}: ${filter.clean(message.body)}`);
}
});
});
http.listen( (process.env.PORT || 8080), ()=>{
console.log("Main page working");
});