-
Notifications
You must be signed in to change notification settings - Fork 24
/
server.js
74 lines (61 loc) · 2.01 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
// # Main Server
// ##### [Back to Table of Contents](./tableofcontents.html)
// ## Dependencies
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var Board = require('./db/board');
var port = process.env.PORT || 8080;
var handleSocket = require('./server/sockets');
var sslRedirect = require('heroku-ssl-redirect');
// **Force SSL redirect on Heroku**
app.use(sslRedirect());
// ## Routes
// **Static folder for serving application assets**
app.use('/', express.static(__dirname + '/public'));
// **Static folder for serving documentation**
app.use('/documentation', express.static(__dirname + '/docs'));
// **Home Page**
app.get('/', function(req, res) {
res.sendFile(__dirname + '/public/index.html');
});
// **Documentation Page**
app.get('/documentation', function(req, res) {
res.sendFile(__dirname + '/docs/tableofcontents.html');
});
// **Get a new whiteboard**
app.get('/new', function(req, res) {
// Create a new mongoose board model.
var board = new Board.boardModel({strokes: []});
var id = board._id.toString();
board.save(function(err, board) {
if (err) { console.error(err); }
else {
console.log('board saved!');
}
});
// Redirect to the new board.
res.redirect('/' + id);
});
// **Wildcard route & board id handler.**
app.get('/*', function(req, res) {
var id = req.url.slice(1);
Board.boardModel.findOne({id: id}, function(err, board) {
// If the board doesn't exist, or the route is invalid,
// then redirect to the home page.
if (err) {
res.redirect('/');
} else {
// Invoke [request handler](../documentation/sockets.html) for a new socket connection
// with board id as the Socket.io namespace.
handleSocket(req.url, board, io);
// Send back whiteboard html template.
res.sendFile(__dirname + '/public/board.html');
}
});
});
// **Start the server.**
http.listen(port, function() {
console.log('server listening on', port, 'at', new Date());
});