forked from bradtraversy/mongochat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
64 lines (53 loc) · 1.66 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
const mongo = require('mongodb').MongoClient;
const client = require('socket.io').listen(4000).sockets;
//Connect to mongo
mongo.connect('mongodb://localhost/mongochat', (err, db) => {
if (err) {
throw err;
}
console.log('MongoDb connected...');
//connect to Socket.io
client.on('connection', (socket) => {
let chat = db.collection('chats');
//send status to client
let sendStatus = function(msg) {
socket.emit('status', msg);
};
//get chats from mongo
chat.find().limit(100).sort({_id: 1}).toArray((err, res) => {
if (err){
throw err;
}
//emit the message
socket.emit('output', res);
});
//handle input events
socket.on('input', (data) => {
let name = data.name;
let message = data.message;
//check for name and message
if (name === '' || message === ''){
//send error status
sendStatus('Please enter a name and message');
}
else {
//insert message
chat.insert({name, message}, () => {
client.emit('output', [data]);
//send status
sendStatus({
message: 'Message send',
clear: true
});
});
}
});
//handle clear
socket.on('clear', (data) => {
//remove all chats from db
chat.remove({}, () => {
socket.emit('cleared');
});
});
});
});