diff --git a/package.json b/package.json index 88942e3..6f36b00 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,9 @@ "author": "Sam Hadow", "license": "BSD-3-Clause-Attribution", "dependencies": { - "express": "^4.21.2" + "bootstrap": "^5.3.3", + "cookie-parser": "^1.4.7", + "express": "^4.21.2", + "socket.io": "^4.8.1" } } diff --git a/src/app.js b/src/app.js index 55751dc..5f4ddba 100644 --- a/src/app.js +++ b/src/app.js @@ -1,11 +1,25 @@ -const express = require('express') -const app = express() -const port = 3333 +const express = require('express'); +const app = express(); +var http = require('http').Server(app); +const port = process.env.PORT || 3333; +app.set("port", port); +var io = require('socket.io')(http); +const cookieParser = require('cookie-parser'); +app.use(cookieParser()); -app.get('/', (request, result) => { - result.send('Hello World!') -}) +app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); +app.use(express.static('public')); + +const routes = require(__dirname + '/routes'); +app.use("/", routes); + +var server = http.listen(port, () => { + console.log(`server is running on port ${server.address().port}`); +}); + +io.on('connection', (socket) => { + socket.on('chat message', (msg) => { + console.log(`message: ${msg}, id: ${socket.id}`); + }); +}); -app.listen(port, () => { - console.log(`App listening on port ${port}`) -}) diff --git a/src/controllers/account.js b/src/controllers/account.js new file mode 100644 index 0000000..113d022 --- /dev/null +++ b/src/controllers/account.js @@ -0,0 +1,22 @@ + +const accountController = { + getCookie: (req, res) => { + console.log("site loaded") + console.log(req.cookies) + var cookie = req.cookies.user; + if (!cookie) { + var randomNumber=Math.random().toString(); + randomNumber=randomNumber.substring(2,randomNumber.length); + let options = { + maxAge: 86400000, // 1 day + httpOnly: true + } + // Set cookie + res.cookie("user", randomNumber, options); + console.log("cookie set"); + } + res.redirect('/'); + } +}; + +module.exports = accountController; diff --git a/src/controllers/main.js b/src/controllers/main.js new file mode 100644 index 0000000..8360cdc --- /dev/null +++ b/src/controllers/main.js @@ -0,0 +1,10 @@ + +const mainController = { + root: (req, res) => { + res.json({ + message: "Hello, World!", + }); + } +}; + +module.exports = mainController; diff --git a/src/public/index.html b/src/public/index.html new file mode 100644 index 0000000..7cfa939 --- /dev/null +++ b/src/public/index.html @@ -0,0 +1,24 @@ + + +
+ + + + + + + + + + + + + diff --git a/src/public/script.js b/src/public/script.js new file mode 100644 index 0000000..4cf056f --- /dev/null +++ b/src/public/script.js @@ -0,0 +1,14 @@ +var jswarn = document.getElementById('jswarn'); +jswarn.innerText = ''; + +var socket = io(); +var form = document.getElementById('form'); +var input = document.getElementById('input'); + +form.addEventListener('submit', function(e) { + e.preventDefault(); + if (input.value) { + socket.emit('chat message', input.value); + input.value = ''; + } +}); diff --git a/src/public/style.css b/src/public/style.css new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/account.js b/src/routes/account.js new file mode 100644 index 0000000..dad0e9b --- /dev/null +++ b/src/routes/account.js @@ -0,0 +1,9 @@ +const express = require("express"); +const accountController = require("../controllers/account"); +const router = express.Router(); + +router + .route("/cookie") + .get(accountController.getCookie); + +module.exports = router; diff --git a/src/routes/index.js b/src/routes/index.js new file mode 100644 index 0000000..568650f --- /dev/null +++ b/src/routes/index.js @@ -0,0 +1,9 @@ +const express = require("express"); +const rootRoutes = require('./root'); +const accountRoutes = require('./account.js'); +const router = express.Router(); + +router.use("/", rootRoutes); +router.use("/account", accountRoutes); + +module.exports = router; diff --git a/src/routes/root.js b/src/routes/root.js new file mode 100644 index 0000000..86189bf --- /dev/null +++ b/src/routes/root.js @@ -0,0 +1,9 @@ +const express = require("express"); +const mainController = require("../controllers/main"); +const router = express.Router(); + +router + .route("/") + .get(mainController.root); + +module.exports = router;