diff --git a/app.js b/app.js index 1f7ed5e..fb9f8d2 100644 --- a/app.js +++ b/app.js @@ -1,37 +1,2 @@ -var express = require('express'); -var path = require('path'); -var cookieParser = require('cookie-parser'); -var logger = require('morgan'); -var sassMiddleware = require('node-sass-middleware'); - -var indexRouter = require('./routes/index'); -var pingRouter = require('./routes/ping'); - -var app = express(); - -let port = 3003; -let log = false; - -if(process.env.PORT) port = process.env.PORT; -if(process.env.LOG) log = process.env.LOG; - -console.log("Running on port: " + port); - -if(log) app.use(logger('dev')); -app.use(express.json()); -app.use(express.urlencoded({ extended: false })); -app.use(cookieParser()); -app.use(sassMiddleware({ - src: path.join(__dirname, 'public'), - dest: path.join(__dirname, 'public'), - indentedSyntax: true, // true = .sass and false = .scss - sourceMap: true -})); -//app.use(express.static(path.join(__dirname, 'public'))); - -app.use('/', indexRouter); -app.use('/ping', pingRouter); - -app.listen(port); - -module.exports = app; +import('./websocket') +import('./express') diff --git a/express.js b/express.js new file mode 100644 index 0000000..ad92dd5 --- /dev/null +++ b/express.js @@ -0,0 +1,38 @@ + +let express = require('express'); +let path = require('path'); +let cookieParser = require('cookie-parser'); +let logger = require('morgan'); +let sassMiddleware = require('node-sass-middleware'); + +let indexRouter = require('./routes/index'); +let pingRouter = require('./routes/ping'); + +let app = express(); + +let port = 3003; +let log = false; + +if(process.env.PORT) port = process.env.PORT; +if(process.env.LOG) log = process.env.LOG; + +console.log("Running on port: " + port); + +if(log) app.use(logger('dev')); +app.use(express.json()); +app.use(express.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(sassMiddleware({ + src: path.join(__dirname, 'public'), + dest: path.join(__dirname, 'public'), + indentedSyntax: true, // true = .sass and false = .scss + sourceMap: true +})); +//app.use(express.static(path.join(__dirname, 'public'))); + +app.use('/', indexRouter); +app.use('/ping', pingRouter); + +app.listen(port); + +module.exports = app; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 31d4e7c..e10173c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,8 @@ "mongodb": "^4.3.1", "morgan": "~1.9.1", "node-sass-middleware": "0.11.0", - "underscore": "^1.13.2" + "underscore": "^1.13.2", + "ws": "^8.4.2" }, "devDependencies": { "bestzip": "^2.1.7" @@ -2918,6 +2919,26 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -5315,6 +5336,12 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "requires": {} + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", diff --git a/package.json b/package.json index 7280245..8e1265a 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "start": "node ./bin/www", - "build": "bestzip AvusdDataCollection.zip app.js bin public routes package*.json" + "build": "bestzip ../TempestDataCollection.zip app.js bin public routes package*.json" }, "dependencies": { "cookie-parser": "~1.4.4", @@ -13,7 +13,8 @@ "mongodb": "^4.3.1", "morgan": "~1.9.1", "node-sass-middleware": "0.11.0", - "underscore": "^1.13.2" + "underscore": "^1.13.2", + "ws": "^8.4.2" }, "devDependencies": { "bestzip": "^2.1.7" diff --git a/websocket.js b/websocket.js new file mode 100644 index 0000000..68dd001 --- /dev/null +++ b/websocket.js @@ -0,0 +1,36 @@ +import WebSocket, {WebSocketServer} from 'ws' + +try { + const server = new WebSocketServer({ + port: 3001, + perMessageDeflate: { + zlibDeflateOptions: { + // See zlib defaults. + chunkSize: 1024, + memLevel: 7, + level: 3 + }, + zlibInflateOptions: { + chunkSize: 10 * 1024 + }, + // Other options settable: + clientNoContextTakeover: true, // Defaults to negotiated value. + serverNoContextTakeover: true, // Defaults to negotiated value. + serverMaxWindowBits: 10, // Defaults to negotiated value. + // Below options specified as default values. + concurrencyLimit: 10, // Limits zlib concurrency for perf. + threshold: 1024 // Size (in bytes) below which messages + // should not be compressed if context takeover is disabled. + } + }) + + server.on('connection', function connection(socket) { + socket.on('message', function message(data) { + console.log("received: %s", data) + socket.send("pong") + }) + }) +} +catch(e) { + console.log(e); +} \ No newline at end of file