-
Notifications
You must be signed in to change notification settings - Fork 1
/
server.js
executable file
·150 lines (108 loc) · 3.72 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
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
// server.js
var config = require('./configuration/conf.json')
var express = require('express')
var app = express()
var passport = require('passport')
var session = require('express-session')
var bodyParser = require('body-parser')
var env = require('dotenv').load()
var exphbs = require('express-handlebars')
var flash = require('connect-flash')
var cookieParser = require('cookie-parser')
var cookie = require('cookie');
var port = process.env.PORT || 3000
var morgan = require('morgan')
var SSE = require('sse')
var clients = []
// set up our express application
app.use(morgan('dev')) // log every request to the console
//For BodyParser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
// to support JSON-encoded bodies
app.use(cookieParser()) // read cookies (needed for auth)
// For Passport
app.use(session({
secret: config.session_secret,
resave: true,
saveUninitialized:true
})); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()) // use connect-flash for flash messages stored in session
//For Handlebars
app.set('views', './app/views')
// app.engine('hbs', exphbs({extname: '.hbs'}));
// app.set('view engine', '.hbs');
app.set('view engine', 'ejs') // set up ejs for templating
app.get('/', function (req, res) {
// if user is authenticated in the session, carry on
if (req.isAuthenticated()) {
console.log('req.user.username --> ' + req.user.username);
var cookie = req.cookies.betify_user_name;
res.cookie('betify_user_name', req.user.username, { maxAge: 900000, httpOnly: true });
// load the index.ejs file
res.render('index.ejs', {
user: req.user // get the user out of session and pass to template
})
} else {
res.clearCookie('betify_user_name');
res.render('index.ejs', {
user: false
})
}
});
// app.use(express.static(path.resolve(__dirname, '/public')))
app.use(express.static(__dirname));
//Models
var models = require("./app/models");
//Routes
var authRoute = require('./app/routes/auth.js')(app,passport);
// var betsRoute = require('./app/routes/bets.js')(app,passport);
//load passport strategies
require('./app/config/passport/passport.js')(passport,models.user);
//load binance socket
require('./app/controllers/binanceapicontroller.js')(models,clients);
//Sync Database
models.sequelize.sync().then(function(){
console.log('Database Connected!')
}).catch(function(err){
console.log(err, "Something went wrong with the Database Update!")
});
// Start the app
var server = app.listen(port, '0.0.0.0', function () {
let host = server.address().address
let port = server.address().port
console.log('Server started: Betify at http://%s:%s', host, port)
// initialize the /sse route
var sse = new SSE(server)
// When a connection is made
sse.on('connection', function (stream) {
console.log('Opened connection ')
clients.push(stream)
// Send data back to the client
var json = JSON.stringify({ message: 'Gotcha' })
stream.send(json)
console.log('Sent: ' + json)
// The connection was closed
stream.on('close', function () {
clients.splice(clients.indexOf(stream), 1)
console.log('Closed connection ')
})
})
})
var io = require('socket.io').listen(server);
io.on('connection', function(socket){
let cookief = socket.handshake.headers.cookie;
let cookies = cookie.parse(socket.handshake.headers.cookie);
let betify_user_name = 'Guest User';
if(cookies.betify_user_name){
betify_user_name = cookies.betify_user_name;
}
socket.on('main chatroom', function(msg){
io.emit('main chatroom', {
user_name: betify_user_name,
msg: msg
});
});
});