Added logic to track server boot status
parent
23355a6771
commit
482ed9c0e2
|
@ -6,31 +6,44 @@ const path = require('path')
|
|||
const debug = require('debug')('tracman-demo')
|
||||
|
||||
module.exports = (io) => {
|
||||
// File is space-seperated: delay, lat, lon, dir, spd
|
||||
fs.readFile(path.join(__dirname, '/demo.txt'), (err, data) => {
|
||||
if (err) console.error(err.stack)
|
||||
return new Promise( (resolve, reject) => {
|
||||
|
||||
const lines = data.toString().split('\n');
|
||||
|
||||
(function sendLoc (ln) {
|
||||
if (ln > 20754) {
|
||||
sendLoc(0)
|
||||
// File is space-seperated: delay, lat, lon, dir, spd
|
||||
fs.readFile(path.join(__dirname, '/demo.txt'), (err, data) => {
|
||||
if (err) {
|
||||
console.error(err.message)
|
||||
reject()
|
||||
} else {
|
||||
let loc = lines[ln].split(' ')
|
||||
debug(`Sending demo location: ${loc[1]}, ${loc[2]}`)
|
||||
io.to('demo').emit('get', {
|
||||
tim: new Date(),
|
||||
lat: loc[1],
|
||||
lon: loc[2],
|
||||
dir: loc[3],
|
||||
spd: loc[4]
|
||||
})
|
||||
|
||||
// Repeat after delay in milliseconds
|
||||
setTimeout(() => {
|
||||
sendLoc(ln + 1) // next line of file
|
||||
}, loc[0])
|
||||
const lines = data.toString().split('\n');
|
||||
|
||||
(function sendLoc (ln) {
|
||||
if (ln > 20754) {
|
||||
sendLoc(0)
|
||||
} else {
|
||||
let loc = lines[ln].split(' ')
|
||||
debug(`Sending demo location: ${loc[1]}, ${loc[2]}`)
|
||||
io.to('demo').emit('get', {
|
||||
tim: new Date(),
|
||||
lat: loc[1],
|
||||
lon: loc[2],
|
||||
dir: loc[3],
|
||||
spd: loc[4]
|
||||
})
|
||||
|
||||
// Repeat after delay in milliseconds
|
||||
setTimeout(() => {
|
||||
sendLoc(ln + 1) // next line of file
|
||||
}, loc[0])
|
||||
}
|
||||
})(5667)
|
||||
|
||||
console.log(' Demo running')
|
||||
resolve()
|
||||
|
||||
}
|
||||
})(5667)
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
}
|
||||
|
|
|
@ -15,29 +15,37 @@ let transporter = nodemailer.createTransport({
|
|||
})
|
||||
|
||||
module.exports = {
|
||||
|
||||
|
||||
verify: () => {
|
||||
debug(`Verifying SMTP connection...`)
|
||||
transporter.verify( (err,success) => {
|
||||
if (err){ console.error(err.stack); }
|
||||
console.log(`SMTP${(success)?'':' not'} ready`)
|
||||
} )
|
||||
|
||||
return new Promise( (resolve, reject) => {
|
||||
transporter.verify()
|
||||
.then( (success) => {
|
||||
console.log(` SMTP${(success)?'':' not'} ready`)
|
||||
resolve()
|
||||
}).catch( (err) => {
|
||||
console.log(err.stack)
|
||||
reject()
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
|
||||
send: transporter.sendMail.bind(transporter),
|
||||
|
||||
|
||||
text: (text) => {
|
||||
return `Tracman\n\n${text}\n\nDo not reply to this email\nFor information about why you received this email, see the privacy policy at ${env.url}/privacyy#email`
|
||||
},
|
||||
|
||||
|
||||
html: (text)=>{
|
||||
return `<h1><a href="/" style="text-decoration:none;"><span style="color:#000;font-family:sans-serif;font-size:36px;font-weight:bold"><img src="${env.url}/static/img/icon/by/32.png" alt="+" style="margin-right:10px">Tracman</span></a></h1>${text}<p style="font-size:8px;">Do not reply to this email. For information about why you recieved this email, see our <a href="${env.url}/privacy#email">privacy policy</a>. </p>`
|
||||
},
|
||||
|
||||
|
||||
noReply: '"Tracman" <NoReply@tracman.org>',
|
||||
|
||||
|
||||
to: (user) => {
|
||||
return `"${user.name}" <${user.email}>`
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
75
server.js
75
server.js
|
@ -20,19 +20,30 @@ const http = require('http').Server(app)
|
|||
const io = require('socket.io')(http)
|
||||
const sockets = require('./config/sockets.js')
|
||||
|
||||
// Promises marking a ready server
|
||||
let ready_promise_list = []
|
||||
|
||||
/* Database */ {
|
||||
// Setup with native ES6 promises
|
||||
mongoose.Promise = global.Promise
|
||||
|
||||
// Connect to database
|
||||
mongoose.connect(env.mongoSetup, {
|
||||
useMongoClient: true,
|
||||
socketTimeoutMS: 30000,
|
||||
//reconnectTries: 30,
|
||||
keepAlive: true
|
||||
})
|
||||
.then( (db) => { console.log(`Mongoose connected to mongoDB ${db.name}`); } )
|
||||
.catch( (err) => { console.error(err.stack); } )
|
||||
ready_promise_list.push( new Promise( (resolve, reject) => {
|
||||
mongoose.connect(env.mongoSetup, {
|
||||
useMongoClient: true,
|
||||
socketTimeoutMS: 30000,
|
||||
//reconnectTries: 30,
|
||||
keepAlive: true
|
||||
})
|
||||
.then( (db) => {
|
||||
console.log(` Mongoose connected to ${db.name} database`)
|
||||
resolve()
|
||||
} )
|
||||
.catch( (err) => {
|
||||
console.error(err.stack)
|
||||
reject()
|
||||
} )
|
||||
}) )
|
||||
|
||||
}
|
||||
|
||||
|
@ -159,26 +170,46 @@ const sockets = require('./config/sockets.js')
|
|||
}
|
||||
|
||||
/* RUNTIME */
|
||||
console.log('Starting Tracman server...')
|
||||
console.log(`Starting Tracman server in ${env.mode} mode...`)
|
||||
|
||||
// Test SMTP server
|
||||
mail.verify()
|
||||
ready_promise_list.push(mail.verify())
|
||||
|
||||
// Listen
|
||||
http.listen(env.port, () => {
|
||||
console.log(`Listening in ${env.mode} mode on port ${env.port}... `)
|
||||
ready_promise_list.push( new Promise( (resolve, reject) => {
|
||||
http.listen(env.port, () => {
|
||||
|
||||
// Check for clients for each user
|
||||
User.find({})
|
||||
.then((users) => {
|
||||
users.forEach((user) => {
|
||||
sockets.checkForUsers(io, user.id)
|
||||
console.log(` Listening on port ${env.port}`)
|
||||
resolve()
|
||||
|
||||
// Check for clients for each user
|
||||
ready_promise_list.push( new Promise( (resolve, reject) => {
|
||||
User.find({})
|
||||
.then((users) => {
|
||||
users.forEach((user) => {
|
||||
sockets.checkForUsers(io, user.id)
|
||||
})
|
||||
resolve()
|
||||
})
|
||||
.catch( (err) => {
|
||||
console.error(err.stack)
|
||||
reject()
|
||||
})
|
||||
}) )
|
||||
|
||||
// Start transmitting demo
|
||||
ready_promise_list.push( demo(io) )
|
||||
|
||||
// Mark everything when working correctly
|
||||
Promise.all(ready_promise_list).then( () => {
|
||||
console.log('Tracman server is running properly\n')
|
||||
app.emit('ready') // Used for tests
|
||||
}).catch( (err) => {
|
||||
if (err) console.error(err.message)
|
||||
console.log(`Tracman server is not running properly!\n`)
|
||||
})
|
||||
})
|
||||
.catch((err) => { console.error(err.stack) })
|
||||
|
||||
// Start transmitting demo
|
||||
demo(io)
|
||||
})
|
||||
})
|
||||
}) )
|
||||
|
||||
module.exports = app
|
||||
|
|
Loading…
Reference in New Issue