express routing
This commit is contained in:
parent
3c0da2e91f
commit
ad0fcca2ee
@ -9,6 +9,9 @@
|
|||||||
"author": "Sam Hadow",
|
"author": "Sam Hadow",
|
||||||
"license": "BSD-3-Clause-Attribution",
|
"license": "BSD-3-Clause-Attribution",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"express": "^4.21.2"
|
"bootstrap": "^5.3.3",
|
||||||
|
"cookie-parser": "^1.4.7",
|
||||||
|
"express": "^4.21.2",
|
||||||
|
"socket.io": "^4.8.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
32
src/app.js
32
src/app.js
@ -1,11 +1,25 @@
|
|||||||
const express = require('express')
|
const express = require('express');
|
||||||
const app = express()
|
const app = express();
|
||||||
const port = 3333
|
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) => {
|
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css'));
|
||||||
result.send('Hello World!')
|
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}`)
|
|
||||||
})
|
|
||||||
|
22
src/controllers/account.js
Normal file
22
src/controllers/account.js
Normal file
@ -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;
|
10
src/controllers/main.js
Normal file
10
src/controllers/main.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
const mainController = {
|
||||||
|
root: (req, res) => {
|
||||||
|
res.json({
|
||||||
|
message: "Hello, World!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = mainController;
|
24
src/public/index.html
Normal file
24
src/public/index.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
<script src="/socket.io/socket.io.js" defer></script>
|
||||||
|
<script src="script.js" defer></script>
|
||||||
|
<!--load bootstrap-->
|
||||||
|
<link rel="stylesheet" href="/css/bootstrap.min.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mainbody">
|
||||||
|
<div id="jswarn"> Please enable Javascript to use this app. </div>
|
||||||
|
<a href="./account/cookie" class="btn btn-primary">Get cookie</a>
|
||||||
|
<ul id="messages"></ul>
|
||||||
|
<form id="form" action="">
|
||||||
|
<input id="input" autocomplete="off" />
|
||||||
|
<button>Send</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
14
src/public/script.js
Normal file
14
src/public/script.js
Normal file
@ -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 = '';
|
||||||
|
}
|
||||||
|
});
|
0
src/public/style.css
Normal file
0
src/public/style.css
Normal file
9
src/routes/account.js
Normal file
9
src/routes/account.js
Normal file
@ -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;
|
9
src/routes/index.js
Normal file
9
src/routes/index.js
Normal file
@ -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;
|
9
src/routes/root.js
Normal file
9
src/routes/root.js
Normal file
@ -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;
|
Loading…
x
Reference in New Issue
Block a user