express-socket.io-session
express-socket.io-session copied to clipboard
Trying to use session data in socket resulting to "undefined"
Trying to use session data in socket resulting to "undefined". '
(app.js)
const express = require("express"); const express_validator = require("express-validator"); const path = require("path"); const body_parser = require("body-parser"); const nunjucks = require("nunjucks"); const socket = require("socket.io"); const mysql = require("mysql"); const cookieParser = require("cookie-parser"); const session = require("express-session")({ resave: true, saveUninitialized: true, secret: "Test" });
//Main application var app = express(); var server = app.listen(3000, () => { console.log("Server is started.."); });
//Static configuration app.use(express.static("public"));
//View configuration nunjucks.configure("views", { express: app, watch: true, autoescape: true }); app.set("views", path.join(__dirname, "views")); app.set("view engine", "nunjucks");
//Middlewares app.use(express_validator()); app.use(body_parser.json()); app.use(body_parser.urlencoded({extended: false})); app.use(cookieParser()); app.use(session);
var sharedsession = require("express-socket.io-session");
//Routes configuration app.use(require("./routes/main-routes/index"));
//Socket configuration var io = socket(server); io.use(sharedsession(session, { autoSave: true }))
var socket_handler = require("./socket.io/socket")(io);
(socket.js)
module.exports = function(io) { io.sockets.on("connection", (socket) => { console.log(socket.handshake.session.username) //Username is set when logging in } }
(index.js) //Route handler
router.route("/") .get((req, res) => { res.render("index"); }) .post((req, res) => { let sql = "SELECT * FROM user_data WHERE username = ? AND password = ?"; let query = db.query(sql, [req.body.username, crypt.encrypt(req.body.password)], (err, result) => { if (err) { console.log(err); res.render("index", { error: "Contact admin" }) } else { //Check if user exist, if so logg user if (result[0] != null) { req.session.username = req.body.username; // <-- Giving session .username value. res.redirect("/chat"); }else { res.render("index", { error: "Invalid username or password" }) } } }) }); express ^ 4.16.3 socket.io ^ 2.1.0
Did you ever figure this out?
Did you ever figure this out? ²