forked from scenevr/server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
executable file
·66 lines (52 loc) · 1.78 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
#!/usr/bin/env node
var WebsocketServer = require('./lib/websocket-server');
// var IndexScene = require('./lib/index-scene');
var path = require('path');
var express = require('express');
var http = require('http');
var cors = require('cors');
var Env = require('./lib/env');
var fs = require('fs');
function Server (folder, port) {
this.folder = path.join(process.cwd(), folder);
this.port = parseInt(port, 10);
}
/**
* Start the express server and the websocket server
*/
Server.prototype.start = function () {
var self = this;
console.log('[server] Serving scenes in \'' + this.folder + '\' on port ' + this.port + '...');
this.webServer = express();
this.webServer.use(cors());
this.webServer.use(express.static(this.folder));
this.webServer.get('/', function (req, res) {
res.redirect('http://client.scenevr.com/?connect=' + req.get('host'));
});
var httpServer = http.createServer(this.webServer);
httpServer.listen(this.port);
this.websocketServer = new WebsocketServer(httpServer, this.folder);
this.websocketServer.listen();
this.websocketServer.folder = this.folder;
if (Env.supportsAutoReload()) {
fs.watch(this.folder, function (event, filename) {
if (event === 'change') {
self.websocketServer.restartReflectorsByFilename(path.resolve(self.folder, filename));
}
});
}
// this.loadAllScenes();
if (Env.isDevelopment()) {
require('dns').lookup(require('os').hostname(), function (err, addr, fam) {
var url = err ? 'localhost:' + self.port : addr + ':' + self.port;
console.log('\n\thttp://' + url + '/\n');
});
}
};
var scenePath = process.argv[2];
if (!scenePath) {
console.log('Usage: scenevr [scenedirectory]');
process.exit(-1);
}
var server = new Server(scenePath, Env.getPort());
server.start();