-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
79 lines (63 loc) · 1.58 KB
/
app.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
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
const Vote = require('./models/vote');
//jalankan body parser
app.use(bodyParser.urlencoded({extended: true}));
app.use((req,res,next) => {
req.io = io;
next()
});
//membuat folder public menjadi client server
app.use(express.static(__dirname + '/public'));
mongoose.connect("mongodb://localhost:27017/chartrealtime-dev");
/*
Routes
*/
// Render homepage.
app.get('/',(req,res) => {
res.sendfile('index.html')
})
app.post('/vote',(req,res) => {
var newVote = new Vote({
name : req.body.name
})
newVote.save().then(() => console.log('saved'));
Vote.aggregate(
[{
"$group": {
"_id": "$name",
"total_vote": { "$sum": 1 }
}
}],
function (err, result) {
if (err) throw err;
console.log(result);
req.io.sockets.emit('vote', result);
}
);
res.send({ 'message': 'succesfully added' });
})
/*
Socket.io Setting
*/
io.on('connection',function(socket){
Vote.aggregate(
[{
"$group": {
"_id": "$name",
"total_vote": { "$sum": 1 }
}
}],
function (err, result) {
if (err) throw err;
socket.emit('vote', result);
}
)
})
server.listen(3000,function(){
console.log('server running in port 3000');
});