¿Puedo acceder a una cookie de Socket.io?
Pregunta
Quiero establecer alguna información de usuario en una cookie y ser capaz de acceder a él en la conexión, es posible?
Solución
client.request.headers.cookie
conduce a condiciones de carrera como la cookie siempre apunta al último usuario conectado.
Por favor, véase:. Socket.IO autenticación
Otros consejos
El uso de Socket.IO 0.8.7, se puede acceder a través de los encabezados de solicitud:
socket.handshake.headers
Puede encontrar más detalles sobre esto en https://github.com/LearnBoost/ socket.io/wiki/Authorizing
Lo tengo, esto funciona:
client.request.headers.cookie
Después de mirar al código fuente engine.io se puede establecer cookies utilizando:
var io = require('socket.io')(3000);
io.use((socket, next) => {
socket.conn.transport.once('headers', (headers) => {
headers['set-cookie'] ="sess=test;"; });
next();
});
este código podría entrar en conflicto con el código engine.io que establece la cookie sid. como HTTP / 1.1 y HTTP / 2 cabeceras son sensibles a mayúsculas y engine.io uso 'Set-Cookie' en las cabeceras objeto la adición de un nombre de objeto en minúsculas 'set-cookie' evitaría este problema.