¿Por qué no puedo acceder a esta cookie? 
Cuando el usuario inicia sesión, la cookie se recibe y se envía de vuelta al servidor Express.
Al inicializar un nuevo websocket en el servidor Socket.io, esta cookie no se envía, por lo que estaba tratando de obtenerla a través de document.cookie . Sin embargo, no funcionó ya que la cookie no era modificable.
Es una cookie HttpOnly a la que no se puede acceder a través de Javascript del lado del cliente.
En otras palabras: el servidor puede leer y manipular la cookie. El cliente lo recibe y lo devuelve a ciegas con cada solicitud posterior, sin poder leer o manipular su contenido, al menos no con los medios de Javascript.
El sitio web oficial hizo algo que no funcionó para mí. middleware de sesión exprés
const session = require("express-session"); io.use(wrap(session({ secret: "cats" }))); io.on("connection", (socket) => { const session = socket.request.session; });Entonces, lo solucioné haciendo: Lógica:
Before establishing websocket, request credentials to express endpoint "/userCredentials" and then use these credentials to establish the connectionAdvertencia: el código de abajo está eliminado porque hice muchas lógicas de autenticación
CLIENT: ... useEffect(() => { (async() => { const pending_creds = await fetch("/userCredentials"); const creds = pending_creds.json(); const ws = io({auth: {creds}}) setSocket(ws) })() }, []) ... SERVER: ... app.get("/userCredentials", (req,res) => { const userSession = req.session.user; res.json(userSession) }) ... io.use(socket, next){ const creds = socket.handshake.auth.userSession; if(creds){ next() } else { socket.disconnect() } }