cookie-session, socket.io fails to store socket.id in sessions

127 Views Asked by At

server.js

const express = require("express");
const cookieSession = require("cookie-session");
const socketIo = require("socket.io");

const app = express();

app.use(
  cookieSession({
    name: "session",
    keys: ["key1", "key2"],
  })
);

app.use((req, res, next) => {
  console.log(req.session);
  next();
});

app.get("/", (req, res) => {
  res.sendFile("./index.html", { root: __dirname });
});

app.get("/about", (req, res) => {
  const connectionId = req.session.connectionId;
  res.send(`About. connectionId: ${connectionId}`);
});

const server = app.listen(1234);
const io = socketIo(server);

io.on("connection", (socket) => {
  const connectionId = Math.random().toString(36).substring(2);
  socket.request.session.connectionId = connectionId;
  // socket.request.session.save();
});

My problem is that when I call the connect event on the client, but on the server socket.request.session returns undefined so I can't set a unique value in the cookie-session. What is it connected with?

0

There are 0 best solutions below